diff --git a/AY2425S1-CS2103T-F08-2_tp_master/authorship.json b/AY2425S1-CS2103T-F08-2_tp_master/authorship.json index ce0f758c..66c9383a 100644 --- a/AY2425S1-CS2103T-F08-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F08-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"PrishaVP"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F08-2/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"k-hian"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103-F08-2/tp/graph/badge.svg?token\u003dCW6C84Z7R4)](https://codecov.io/gh/AY2425S1-CS2103-F08-2/tp)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"PrishaVP"},"content":"# ResearchRoster","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"PrishaVP"},"content":"ResearchRoster is a desktop application designed for researchers managing large groups of study participants. ResearchRoster allows for all participants\u0027 details to be consolidated and kept track of in a single program. It is optimized for research studies as it allows researches to efficiently consolidate contacts based on specific experimental criteria, and export it to an easy-to-read format for better data organization.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"PrishaVP"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"PrishaVP"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"PrishaVP"},"content":"## Features","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"PrishaVP"},"content":"- [ ] Add participant contact with relevant details (name, gender, age, contact, research group)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"PrishaVP"},"content":"- [ ] Delete participant contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"PrishaVP"},"content":"- [ ] View a list of all participant contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"PrishaVP"},"content":"- [ ] Save participant contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"PrishaVP"},"content":"- [ ] Exit the application","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"PrishaVP"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"PrishaVP"},"content":"## Additional Information","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"PrishaVP"},"content":"* The project simulates an ongoing software project for a desktop application used for managing contact details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"PrishaVP"},"content":"* It is written in OOP fashion. It provides a reasonably well-written code base bigger (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"PrishaVP"},"content":" * It comes with a reasonable level of user and developer documentation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"PrishaVP"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"k-hian":1,"PrishaVP":17,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":"### Wong Ke Xin","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"\u003cimg src\u003d\"images/wkxcass.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":"[[github](https://github.com/wkxcass)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wkxcass"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"k-hian"},"content":"### Ng Kay Hian","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"k-hian"},"content":"\u003cimg src\u003d\"images/k-hian.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"k-hian"},"content":"[[github](http://github.com/k-hian)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"k-hian"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"k-hian"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":"### Wu Jiawei","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":"\u003cimg src\u003d\"images/wujiaweijoanna.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":"[[github](http://github.com/wujiaweijoanna)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"PrishaVP"},"content":"### Prisha V Prakash","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"PrishaVP"},"content":"\u003cimg src\u003d\"images/prishavp.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"PrishaVP"},"content":"[[github](http://github.com/PrishaVP)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"PrishaVP"},"content":"[[portfolio](team/prisha.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"PrishaVP"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"PrishaVP"},"content":"* Responsibilities: In charge of defining, assigning, and tracking project tasks.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sannie-beep"},"content":"### Sanchita Dhareshwar","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sannie-beep"},"content":"\u003cimg src\u003d\"images/sannie-beep.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"sannie-beep"},"content":"[[github](http://github.com/sannie-beep)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sannie-beep"},"content":"[[portfolio](team/sanchita.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"k-hian":5,"PrishaVP":6,"wujiaweijoanna":5,"wkxcass":5,"sannie-beep":4,"-":37}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"sannie-beep"},"content":"Researchers who,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"sannie-beep"},"content":"* have a need to manage a significant number of study participants","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"sannie-beep"},"content":"* need an easy way to contact different experimental groups","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"sannie-beep"},"content":"* need quick access to study participants\u0027 information","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"sannie-beep"},"content":"* is reasonably comfortable using *CLI* apps","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"sannie-beep"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"sannie-beep"},"content":"As researchers have to handle large groups of participants across multiple studies, `ResearchRoster` allows them to ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"sannie-beep"},"content":"* have all participants consolidated in a single program ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"sannie-beep"},"content":"* consolidate a list of contact details based on **specific experimental criteria**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"sannie-beep"},"content":"* export it to an easy-to-read format for better data organization","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"wkxcass"},"content":"Thus, *ResearchRoster* allows researchers to save time, effort and energy whilst keeping their participant data well-organised.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can …​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"sannie-beep"},"content":"|----------|-------------|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | add a new person | store a new person in my contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | add details to contacts | store details of people in my contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | add multiple tags to participants | tag contacts to multiple study groups |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | delete contacts | remove old/ contacts that I no longer need |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | save my contact list | keep my contacts between sessions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"sannie-beep"},"content":"| `*` | user | exit the program | clear up my processes |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | use a program that is fast | retrieve information quickly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | work on a clean, user-friendly *UI* | navigate the platform with ease |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | list all contacts | view my list of contacts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | see usage instructions | refer to instructions when I forget how to use the app |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | be given a prompt on what format to enter details | easily use commands without having to memorise the accepted format for the CLI entry |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | edit contacts | update details of my contacts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | update participant information in bulk | quickly make changes to large groups of participants |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | archive participants who are no longer active | keep my current participant list uncluttered |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | clear all entries | efficiently restart my progress |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | search contacts by name | locate contacts without having to go through the entire list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | search for participants based on study | quickly locate specific groups of participants |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | tag participants with specific attributes (e.g., age, gender, study criteria) | quickly filter and sort participants |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | change tag details | update the contacts with experimental details |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | filter contacts by tags | view my contacts by specific groups |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | sort my contact list by name | locate a person easily |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | categorize participants by their participation status (e.g., active, completed, withdrawn) | easily manage ongoing studies |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | hide private contact details | prevent others from viewing them without permission |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | export contacts emails (or other details) into easy to copy-paste format | copy the details (like emails) into other places easily |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | anonymize participant data when exporting or sharing | ensure participant confidentiality and legal compliance |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | assign participants randomly into sample groups | easily obtain samples for experiments |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | get reminders about upcoming sessions | be reminded of the time without manually noting it down |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | receive reminders when participant data is missing or needs updates | keep participant records thorough and current |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | track the progress and completion of tasks related to participants | ensure all administrative tasks are completed |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | undo the most recent command | easily undo commands if I key in the wrong information |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"k-hian"},"content":"(For all use cases below, the **System** is the `ResearchRoster` and the **Actor** is the `user/researcher`, unless specified otherwise.)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC01 - Add a new person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* -","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* new person record in the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"k-hian"},"content":"1. User requests to add a new person with provided details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster adds a new person.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"k-hian"},"content":"**Extension**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"k-hian"},"content":"* 1a. The necessary details are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"k-hian"},"content":"#### **Use case: UC02 - Delete a person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person to delete is removed from the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"k-hian"},"content":"3. User requests to delete a specific person in the list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster deletes the person.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC03 - Edit a person\u0027s record**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person record is edited on the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"k-hian"},"content":"3. User requests to edit a person\u0027s record with provided details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster edits the person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"k-hian"},"content":"* 3b. The changes to make are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC04 - Edit records in bulk**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person record(s) is/are edited on the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"k-hian"},"content":"1. User requests a filtered list of persons ([UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the filtered list of persons.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"k-hian"},"content":"3. User requests to apply a change to all records in the list.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster applies the change to all records in the list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"k-hian"},"content":"* 3a. The given input is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC05 - List all persons**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* list of person record(s) is shown","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"k-hian"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"k-hian"},"content":"* 2a. No existing person records.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"k-hian"},"content":" * 2a1. ResearchRoster shows a message indicating the list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"k-hian"},"content":" * 2a2. ResearchRoster shows an empty list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC06 - Find persons by criteria**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* list of person record(s) that match the criteria is shown","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"k-hian"},"content":"1. User requests to list persons that match the criteria.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"k-hian"},"content":"* 1a. The criteria is missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows a message indicating the filtered list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"k-hian"},"content":" * 1a2. ResearchRoster shows an empty filtered list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"k-hian"},"content":"* 2a. No person records that matches the criteria.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"k-hian"},"content":" * 2a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC07 - Add study group tag(s) to person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* study group tag(s) is/are added to person record","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"k-hian"},"content":"3. User requests to add study group tag(s) to a person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster adds the tag(s) to the person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"k-hian"},"content":"* 3b. The tag(s) to add are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC08 - Remove study group tag(s) from person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously, user has added study group tag(s) to person record previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* study group tag(s) is/are removed from person record","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"k-hian"},"content":"3. User requests to remove study group tag(s) from a person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster removes the tag(s) from the person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"k-hian"},"content":"* 3b. The tag(s) to remove are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC09 - Add progress status to person record**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* progress status is added to person record","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"k-hian"},"content":"3. User requests to add progress status to a person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster adds the status to the person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"k-hian"},"content":"* 3b. The given status is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC10 - Export contacts of list**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) with email previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* a text document with list of contacts in plain text","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"k-hian"},"content":"3. User requests to export contacts of persons in the list.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster adds the list of persons\u0027 contacts to a text file for the user.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"k-hian"},"content":"* 4a. ResearchRoster is unable to write to the text file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"k-hian"},"content":" * 4a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC11 - Assign sample groups**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* study group tags are randomly added to person records based on study parameters","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"k-hian"},"content":"3. User requests to randomly assign the list of persons into sample groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster assigns the list of persons into sample groups by adding study group tags to each record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"k-hian"},"content":"* 3a. The study parameters are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC12 - Undo last action**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has performed an action","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* system state is restored to before last action performed","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"k-hian"},"content":"1. User requests to undo the last action.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster restores records to before the last action.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC13 - Create a session reminder**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* -","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* a reminder is set and triggered before the session","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"k-hian"},"content":"1. User requests to create a session reminder.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows a message confirming reminder is set.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster prompts the user accordingly before the session.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"k-hian"},"content":"* 1a. The session details are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"k-hian"},"content":"* *a. At any time, User chooses to cancels the session reminder.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"k-hian"},"content":" * *a1. ResearchRoster shows a message confirming reminder is cancelled.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC14 - Track study progress**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added progress status to person(s) record previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* progress status for study is shown","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"k-hian"},"content":"1. User requests to track progress for a study.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the progress status of persons in the study.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"k-hian"},"content":"* 1a. The given input is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC15 - Archive old records**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person records are archived","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"k-hian"},"content":"3. User requests to archive a person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster archives the person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"wkxcass"},"content":"#### General requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"wkxcass"},"content":"* The software should be offered as a free product/service.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"wkxcass"},"content":"* The source code should be open source.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"wkxcass"},"content":"#### Constraints","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"wkxcass"},"content":"* The data should be stored locally in a human-editable text file (allowing advanced users to modify data directly).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"wkxcass"},"content":"* The software should have minimal reliance on network connectivity and include fallback mechanisms for any network-dependent features.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"wkxcass"},"content":"* The software should not depend on the developer’s remote server.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"wkxcass"},"content":"* The software should be distributed as a single `.jar` file. If that is not feasible, the `.jar` file and any required files should be packaged into a single `.zip` file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"wkxcass"},"content":"* The software should not exceed 100 MB in size, and document files (i.e., `PDF`s of documentation) should not exceed 15 MB each. Neither should be unnecessarily bloated.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"wkxcass"},"content":"* Any third-party frameworks, libraries or services used should be free, open-source (except for services) and permissively licensed. They should not require users to install additional software or create accounts.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"wkxcass"},"content":"* The developer and user guides should be `PDF`-friendly (by avoiding expandable panels, embedded videos, animated `GIF`s etc.).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"wkxcass"},"content":"#### Quality","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"wkxcass"},"content":"* The software should be optimized for the target users: fast typists should be able to complete most tasks more efficiently using the _CLI_ than a _GUI_.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"wkxcass"},"content":"* The software should be intuitive and easy for first-time users to navigate (by providing sample data, a `help` command to access the user guide etc.).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"wkxcass"},"content":"* Multistep commands for onboarding (if any) should have a streamlined, one-step equivalent for regular or expert users.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"wkxcass"},"content":"* The _GUI_ should be intuitive for users who are not tech-savvy.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"wkxcass"},"content":"#### Performance and Efficiency","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"wkxcass"},"content":"* The software should respond to user actions within 5 seconds.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"wkxcass"},"content":"#### Scalability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":740,"author":{"gitId":"wkxcass"},"content":"* The software should be able to accommodate up to 5,000 contacts, without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"wkxcass"},"content":"#### Reliability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"wkxcass"},"content":"* The software should maintain stable operation (i.e., function as intended) at least 99.9% of the time.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"wkxcass"},"content":"#### Robustness","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"wkxcass"},"content":"* **Disaster Recovery and Fault Tolerance:** The software should gracefully handle exceptional events (e.g., errors or failures) without losing data or compromising functionality (e.g., crashing).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"wkxcass"},"content":"* **Error Handling:** Clear, informative error messages should be provided, and errors logged to aid troubleshooting and support.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"wkxcass"},"content":"#### Compliance","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"wkxcass"},"content":"* The software should protect research participants\u0027 confidentiality and comply with relevant legal standards (by safeguarding _private contact details_).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":754,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":755,"author":{"gitId":"wkxcass"},"content":"#### Portability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":756,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":757,"author":{"gitId":"wkxcass"},"content":"* The software should work without requiring an installer.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":758,"author":{"gitId":"wkxcass"},"content":"* The software should run on any _mainstream OS_ that has `Java 17` (and no other Java version installed).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":759,"author":{"gitId":"wkxcass"},"content":"* The _GUI_ should be free from resolution-related inconveniences for standard screen resolutions (1920x1080 or higher) and screen scales (100% and 125%).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":760,"author":{"gitId":"wkxcass"},"content":"* The _GUI_ should remain functional, though not necessarily optimized, for resolutions of 1280x720 or higher and screen scales of 150%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":761,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":762,"author":{"gitId":"wkxcass"},"content":"#### Maintainability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":763,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":764,"author":{"gitId":"wkxcass"},"content":"* **Code Quality:** The code should be well-maintained and follow best practices.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":765,"author":{"gitId":"wkxcass"},"content":"* **Documentation:** Clear, consistent and accurate documentation is required.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":766,"author":{"gitId":"wkxcass"},"content":"* **Testability:** Implemented features should not impede testing or make the software difficult to test.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":767,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":768,"author":{"gitId":"wkxcass"},"content":"#### Process Requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":769,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":770,"author":{"gitId":"wkxcass"},"content":"* The project should follow a development schedule that delivers incremental versions on a weekly basis.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":771,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":772,"author":{"gitId":"wkxcass"},"content":"#### Notes about project scope","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":773,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":774,"author":{"gitId":"wkxcass"},"content":"* Input should primarily be via the _CLI_, with the _GUI_ mainly providing visual feedback.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":775,"author":{"gitId":"wkxcass"},"content":"* The software does not need to support the printing of reports or contacting research participants.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":776,"author":{"gitId":"wkxcass"},"content":"* The software is intended for single-user operation, not multi-user functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":777,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":778,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":779,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":780,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":781,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":782,"author":{"gitId":"wkxcass"},"content":"* **UI**: User Interface - The medium through which users interact with a system, encompassing both graphical (*GUI*) and text-based (*CLI*) elements","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":783,"author":{"gitId":"sannie-beep"},"content":"* **GUI**: Graphical User Interface - A visual-based interface where users interact with the system through graphical elements like icons and windows","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":784,"author":{"gitId":"sannie-beep"},"content":"* **CLI**: Command Line Interface - A text-based interface where users interact with the system by typing commands","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":785,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":786,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":787,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":788,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":789,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":790,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":791,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":792,"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","isFullCredit":false},{"lineNumber":793,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":794,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":795,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":796,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":797,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":798,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":799,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":800,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":801,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":802,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":803,"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","isFullCredit":false},{"lineNumber":804,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":805,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":806,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":807,"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","isFullCredit":false},{"lineNumber":808,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":809,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":810,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":811,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":812,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":813,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":814,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":815,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":816,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":817,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":818,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":819,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":820,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":821,"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","isFullCredit":false},{"lineNumber":822,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":823,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":824,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":825,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":826,"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","isFullCredit":false},{"lineNumber":827,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":828,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":829,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":830,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":831,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":832,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":833,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":834,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":835,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":836,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":837,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"k-hian":353,"wkxcass":65,"sannie-beep":45,"-":374}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"title: \"ResearchRoster\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":"repository: \"AY2425S1-CS2103T-F08-2/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"wujiaweijoanna"},"content":" content: \"ResearchRoster\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":1,"-":294}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"PrishaVP"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Unable save contacts due to unexpected I/O error!\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"PrishaVP"},"content":" \"Unable to save contacts due to denied storage data file access!\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"PrishaVP":2,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format!\\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" .append(\"; Gender: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":" .append(person.getGender())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" .append(\"; Age: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" .append(person.getAge())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":" .append(\"; Details: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" .append(person.getDetail())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":8,"-":45}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" + \"[\" + PREFIX_GENDER + \"GENDER] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_DETAIL + \"DETAIL] \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" + PREFIX_GENDER + \"M \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" + PREFIX_DETAIL + \"Some detail here \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" + PREFIX_TAG + \"friends Group1\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Added successfully! Added participant: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":7,"wkxcass":7,"-":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted successfully!\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" + \"Deleted participant: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_GENDER + \"GENDER] \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_DETAIL + \"DETAIL]...\\n\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" Gender updatedGender \u003d editPersonDescriptor.getGender().orElse(personToEdit.getGender());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wujiaweijoanna"},"content":" Age updatedAge \u003d editPersonDescriptor.getAge().orElse(personToEdit.getAge());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wujiaweijoanna"},"content":" Detail updatedDetail \u003d editPersonDescriptor.getDetail().orElse(personToEdit.getDetail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"wkxcass"},"content":" return new Person(updatedName, updatedEmail, updatedGender, updatedAge, updatedTags, updatedDetail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"wujiaweijoanna"},"content":" private Gender gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"wujiaweijoanna"},"content":" private Age age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"wujiaweijoanna"},"content":" private Detail detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wujiaweijoanna"},"content":" setGender(toCopy.gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"wkxcass"},"content":" setAge(toCopy.age);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"wkxcass"},"content":" setDetail(toCopy.detail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wkxcass"},"content":" return CollectionUtil.isAnyNonNull(name, email, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"wujiaweijoanna"},"content":" public void setGender(Gender gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"wujiaweijoanna"},"content":" public Optional\u003cGender\u003e getGender() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"wujiaweijoanna"},"content":" return Optional.ofNullable(gender); }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"wujiaweijoanna"},"content":" public void setAge(Age age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"wujiaweijoanna"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"wujiaweijoanna"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"wujiaweijoanna"},"content":" public void setDetail(Detail detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d (detail !\u003d null) ? detail : null;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"wujiaweijoanna"},"content":" public Optional\u003cDetail\u003e getDetail() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"wujiaweijoanna"},"content":" return Optional.ofNullable(detail);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":36,"wkxcass":4,"-":210}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"k-hian"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting ResearchRoster as requested ...\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"k-hian":1,"-":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"PrishaVP"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all participants\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"PrishaVP"},"content":" public static final String MESSAGE_EMPTY \u003d \"No saved participants\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"PrishaVP"},"content":" if (model.getFilteredPersonList().isEmpty()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"PrishaVP"},"content":" return new CommandResult(MESSAGE_EMPTY);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"PrishaVP"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"PrishaVP":5,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" PREFIX_DETAIL, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE, PREFIX_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" Gender gender \u003d ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" Detail detail \u003d argMultimap.getValue(PREFIX_DETAIL).map(ParserUtil::parseDetail).orElse(null);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wkxcass"},"content":" Person person \u003d new Person(name, email, gender, age, tagList, detail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":10,"wkxcass":5,"-":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":" public static final Prefix PREFIX_GENDER \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"a/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":" public static final Prefix PREFIX_DETAIL \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":2,"wkxcass":1,"-":13}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" PREFIX_DETAIL, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE, PREFIX_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" if (argMultimap.getValue(PREFIX_GENDER).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" editPersonDescriptor.setGender(ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wujiaweijoanna"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":" editPersonDescriptor.setAge(ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wujiaweijoanna"},"content":" if (argMultimap.getValue(PREFIX_DETAIL).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wujiaweijoanna"},"content":" editPersonDescriptor.setDetail(ParserUtil.parseDetail(argMultimap.getValue(PREFIX_DETAIL).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":11,"wkxcass":3,"-":76}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wujiaweijoanna"},"content":" * Parses a {@code String gender} into a {@code Gender}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" * @throws ParseException if the given {@code gender} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wujiaweijoanna"},"content":" public static Gender parseGender(String gender) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wujiaweijoanna"},"content":" String trimmedGender \u003d gender.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Gender.isValidGender(trimmedGender)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"wujiaweijoanna"},"content":" throw new ParseException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"wujiaweijoanna"},"content":" return new Gender(trimmedGender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wujiaweijoanna"},"content":" * Parses a {@code String age} into an {@code Age}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wujiaweijoanna"},"content":" * @throws ParseException if the given {@code age} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wujiaweijoanna"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"wujiaweijoanna"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wujiaweijoanna"},"content":" * Parses a {@code String detail} into a {@code Detail}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wkxcass"},"content":" public static Detail parseDetail(String detail) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(detail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wujiaweijoanna"},"content":" String trimmedDetail \u003d detail.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"wujiaweijoanna"},"content":" return new Detail(trimmedDetail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":28,"wkxcass":1,"-":106}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"PrishaVP"},"content":" * Models an address book through which ResearchRoster handles all contact information","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"PrishaVP":1,"-":130}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"PrishaVP"},"content":" * Unmodifiable view of an address book through which ResearchRoster","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"PrishaVP"},"content":" * handles all contact information","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"PrishaVP":2,"-":16}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"public class Age {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" \"Age should only contain a non-negative integer, between 0 and 150 (inclusive)\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":" /*","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * The age must be a non-negative integer.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d+\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param age A valid age.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" public Age(String age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.value \u003d age;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" * A valid age should be a non-negative integer, between 0 and 150 (inclusive).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" int age \u003d Integer.parseInt(test);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return age \u003e\u003d 0 \u0026\u0026 age \u003c\u003d 150;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wujiaweijoanna"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wujiaweijoanna"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wujiaweijoanna"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wujiaweijoanna"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"wujiaweijoanna"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"wujiaweijoanna"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wujiaweijoanna"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wujiaweijoanna"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wujiaweijoanna"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":43,"wkxcass":17,"-":15}},{"path":"src/main/java/seedu/address/model/person/Detail.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":" * Represents additional details of a person, including a specific time format.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wkxcass"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"public class Detail {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wujiaweijoanna"},"content":" * Constructs a {@code Detail}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wujiaweijoanna"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * @param detail A valid detail.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wujiaweijoanna"},"content":" public Detail(String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(detail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":" this.value \u003d detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" public Detail() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" this.value \u003d \"\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" if (!(other instanceof Detail)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":" Detail otherDetail \u003d (Detail) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" return value.equals(otherDetail.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":49,"wkxcass":3}},{"path":"src/main/java/seedu/address/model/person/Gender.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":" * Represents a Person\u0027s gender in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"public class Gender {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" \"Gender should only be \u0027F\u0027 / \u0027f\u0027 (Female) or \u0027M\u0027 / \u0027m\u0027 (Male)\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":" /*","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * The gender must be either \u0027F\u0027, \u0027f\u0027, \u0027M\u0027 or \u0027m\u0027.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" public static final String VALIDATION_REGEX \u003d \"^[FfMm]$\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" * Constructs a {@code Gender}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wkxcass"},"content":" * @param gender A valid gender (\u0027F\u0027, \u0027f\u0027, \u0027M\u0027 or \u0027m\u0027).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" * \u0027f\u0027 is stored as \u0027F\u0027; \u0027m\u0027 is stored as \u0027M\u0027.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" public Gender(String gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" checkArgument(isValidGender(gender), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" this.value \u003d gender.toUpperCase();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" public static boolean isValidGender(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wujiaweijoanna"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" if (!(other instanceof Gender)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" Gender otherGender \u003d (Gender) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" return value.equals(otherGender.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":44,"wkxcass":17}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":1,"-":66}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" private final Gender gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" private final Age age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":" private final Detail detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" public Person(Name name, Email email, Gender gender, Age age, Set\u003cTag\u003e tags, Detail detail) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" requireAllNonNull(name, email, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d (detail !\u003d null) ? detail : new Detail(\"\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" public Gender getGender() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" return gender; }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" public Age getAge() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" return age; }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wujiaweijoanna"},"content":" public Detail getDetail() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" return detail; }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"sannie-beep"},"content":" * Returns true if both persons have the same email.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wkxcass"},"content":" * This weaker notion of equality between two persons allows researchers to","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wkxcass"},"content":" * differentiate participants by email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"sannie-beep"},"content":" \u0026\u0026 otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wkxcass"},"content":" \u0026\u0026 gender.equals(otherPerson.gender)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wkxcass"},"content":" \u0026\u0026 age.equals(otherPerson.age)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wkxcass"},"content":" \u0026\u0026 detail.equals(otherPerson.detail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"wkxcass"},"content":" return Objects.hash(name, email, gender, age, detail, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"wujiaweijoanna"},"content":" .add(\"gender\", gender)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"wujiaweijoanna"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wujiaweijoanna"},"content":" .add(\"detail\", detail)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":17,"wkxcass":8,"sannie-beep":2,"-":96}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Alex Yeoh\"), new Email(\"alexyeoh@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"friends\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Bernice Yu\"), new Email(\"berniceyu@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"colleagues\", \"friends\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Email(\"charlotte@example.com\"), new Gender(\"F\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"neighbours\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"David Li\"), new Email(\"lidavid@example.com\"), new Gender(\"M\"), new Age(\"19\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" getTagSet(\"family\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Email(\"irfan@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"classmates\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Email(\"royb@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"colleagues\"), new Detail(\"detail\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":10,"wkxcass":11,"-":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" private final String gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":" private final String age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" private final String detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" @JsonProperty(\"gender\") String gender, @JsonProperty(\"age\") String age,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"detail\") String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" gender \u003d source.getGender().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" age \u003d source.getAge().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wujiaweijoanna"},"content":" detail \u003d source.getDetail().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":" if (gender \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Gender.isValidGender(gender)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wujiaweijoanna"},"content":" final Gender modelGender \u003d new Gender(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"wujiaweijoanna"},"content":" final Age modelAge \u003d new Age(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"wujiaweijoanna"},"content":" final Detail modelDetail \u003d new Detail(detail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"wkxcass"},"content":" return new Person(modelName, modelEmail, modelGender, modelAge, modelTags, modelDetail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":29,"wkxcass":3,"-":84}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"k-hian"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"k-hian"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"k-hian"},"content":" * The Main Window. Provides the basic application layout containing a menu bar","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"k-hian"},"content":" * and space where other JavaFX elements can be placed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"k-hian"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"k-hian"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666 is fixed in later version of","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"k-hian"},"content":" * SDK.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"k-hian"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will not","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"k-hian"},"content":" * work when the focus is in them because the key event is consumed by the","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"k-hian"},"content":" * TextInputControl(s).","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"k-hian"},"content":" * help window purposely so to support accelerators even when focus is in","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"k-hian"},"content":" * CommandBox or ResultDisplay.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"k-hian"},"content":" resultDisplay.setFeedbackToUser(ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"k-hian"},"content":" // Disable commandBox upon exiting","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"k-hian"},"content":" commandBoxPlaceholder.getChildren().get(0).setDisable(true);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"k-hian"},"content":" new Thread(() -\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"k-hian"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"k-hian"},"content":" // Display FeedbackToUser for 3 seconds before exiting","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"k-hian"},"content":" Thread.sleep(3000);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"k-hian"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"k-hian"},"content":" ; // Do nothing","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"k-hian"},"content":" } finally {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"k-hian"},"content":" Platform.runLater(() -\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"k-hian"},"content":" });","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"k-hian"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"k-hian"},"content":" }).start();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"k-hian":26,"-":187}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" private Label gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" private Label age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" @FXML","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":" private Label detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wujiaweijoanna"},"content":" gender.setText(person.getGender().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wujiaweijoanna"},"content":" age.setText(person.getAge().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wujiaweijoanna"},"content":" detail.setText(person.getDetail().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":7,"-":55}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"PrishaVP"},"content":" title\u003d\"ResearchRoster\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"PrishaVP":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" \u003cHBox spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" \u003cLabel fx:id\u003d\"gender\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$gender\" /\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" \u003cLabel fx:id\u003d\"detail\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$detail\" /\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":3,"wkxcass":2,"-":34}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"PrishaVP"},"content":" public void execute_validCommand_noError() throws Exception {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"PrishaVP"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY, model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wujiaweijoanna"},"content":" // public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"wujiaweijoanna"},"content":" // LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wujiaweijoanna"},"content":" //","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"wujiaweijoanna"},"content":" // public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"wujiaweijoanna"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"wujiaweijoanna"},"content":" // LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"wkxcass"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"PrishaVP":2,"wujiaweijoanna":11,"wkxcass":1,"-":158}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wkxcass"},"content":" * A default model stub that have all the methods failing.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"wkxcass":1,"-":203}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_GENDER_AMY \u003d \"F\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_GENDER_BOB \u003d \"M\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_AGE_AMY \u003d \"20\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_AGE_BOB \u003d \"30\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_DETAIL_AMY \u003d \"detail\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_DETAIL_BOB \u003d \"01-01-2024 1234\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String GENDER_DESC_AMY \u003d \" \" + PREFIX_GENDER + VALID_GENDER_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String GENDER_DESC_BOB \u003d \" \" + PREFIX_GENDER + VALID_GENDER_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String AGE_DESC_BOB \u003d \" \" + PREFIX_AGE + VALID_AGE_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DETAIL_DESC_AMY \u003d \" \" + PREFIX_DETAIL + VALID_DETAIL_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DETAIL_DESC_BOB \u003d \" \" + PREFIX_DETAIL + VALID_DETAIL_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String INVALID_GENDER_DESC \u003d \" \" + PREFIX_GENDER + \"A\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String INVALID_AGE_DESC \u003d \" \" + PREFIX_AGE + \"A\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_AMY).withGender(VALID_GENDER_AMY).withAge(VALID_AGE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wujiaweijoanna"},"content":" .withTags(VALID_TAG_FRIEND).withDetail(VALID_DETAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_BOB).withGender(VALID_GENDER_BOB).withAge(VALID_AGE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withDetail(VALID_DETAIL_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":19,"wkxcass":2,"-":111}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":180}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" // different gender -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" // different age -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wkxcass"},"content":" + editPersonDescriptor.getName().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"wkxcass":5,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DETAIL_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DETAIL_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GENDER_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wkxcass"},"content":" + GENDER_DESC_BOB + AGE_DESC_BOB + TAG_DESC_FRIEND + DETAIL_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wkxcass"},"content":" NAME_DESC_BOB + EMAIL_DESC_BOB + GENDER_DESC_BOB + AGE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + DETAIL_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wkxcass"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + EMAIL_DESC_BOB + GENDER_DESC_BOB + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + DETAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"wkxcass"},"content":" validExpectedPersonString + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wkxcass"},"content":" PREFIX_AGE, PREFIX_DETAIL));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_GENDER_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_GENDER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_AGE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_GENDER_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_GENDER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_AGE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"wujiaweijoanna"},"content":" public void parse_tagFieldsMissing_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"wujiaweijoanna"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withDetail(\"detail\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"wujiaweijoanna"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"wujiaweijoanna"},"content":" + GENDER_DESC_AMY + AGE_DESC_AMY + DETAIL_DESC_AMY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"wujiaweijoanna"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"wujiaweijoanna"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"wujiaweijoanna"},"content":" public void parse_detailFieldsMissing_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"wujiaweijoanna"},"content":" // no detail","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"wujiaweijoanna"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"wujiaweijoanna"},"content":" + GENDER_DESC_AMY + AGE_DESC_AMY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + GENDER_DESC_BOB + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_EMAIL_DESC + GENDER_DESC_BOB + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + INVALID_GENDER_DESC + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + GENDER_DESC_BOB + INVALID_AGE_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + INVALID_GENDER_DESC + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":18,"wkxcass":47,"-":120}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DETAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GENDER_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DETAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wkxcass"},"content":" // invalid gender followed by valid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_GENDER_AMY + VALID_AGE_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wkxcass"},"content":" String userInput \u003d targetIndex.getOneBased() + GENDER_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wkxcass"},"content":" + EMAIL_DESC_AMY + AGE_DESC_AMY + NAME_DESC_AMY + DETAIL_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_AMY).withGender(VALID_GENDER_BOB).withAge(VALID_AGE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wkxcass"},"content":" .withDetail(VALID_DETAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wkxcass"},"content":" String userInput \u003d targetIndex.getOneBased() + GENDER_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"wkxcass"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wkxcass"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"wkxcass"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"wkxcass"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wkxcass"},"content":" userInput \u003d targetIndex.getOneBased() + GENDER_DESC_AMY + AGE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + GENDER_DESC_AMY + AGE_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"wkxcass"},"content":" + GENDER_DESC_BOB + AGE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"wkxcass"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_GENDER_DESC + INVALID_AGE_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"wkxcass"},"content":" + INVALID_GENDER_DESC + INVALID_AGE_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"wkxcass":33,"-":157}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String INVALID_GENDER \u003d \"A\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String INVALID_AGE \u003d \"A\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_GENDER \u003d \"F\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_AGE \u003d \"30\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_DETAIL \u003d \"detail\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGender((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGender(INVALID_GENDER));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":" Gender expectedGender \u003d new Gender(VALID_GENDER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedGender, ParserUtil.parseGender(VALID_GENDER));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_validValueWithWhitespace_returnsTrimmedGender() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" String genderWithWhitespace \u003d WHITESPACE + VALID_GENDER + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wujiaweijoanna"},"content":" Gender expectedGender \u003d new Gender(VALID_GENDER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedGender, ParserUtil.parseGender(genderWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAge((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAge(INVALID_AGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wujiaweijoanna"},"content":" Age expectedAddress \u003d new Age(VALID_AGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedAddress, ParserUtil.parseAge(VALID_AGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"wujiaweijoanna"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_AGE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"wujiaweijoanna"},"content":" Age expectedAge \u003d new Age(VALID_AGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedAge, ParserUtil.parseAge(addressWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"wujiaweijoanna"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseDetail_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"wujiaweijoanna"},"content":" Detail expectedDetail \u003d new Detail(VALID_DETAIL);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedDetail, ParserUtil.parseDetail(VALID_DETAIL));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":36,"-":169}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":105}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wkxcass"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wkxcass"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wkxcass"},"content":"public class AgeTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wkxcass"},"content":" public void isValidAge() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" // null age","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"one\")); // non-numeric","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"0.00\")); // non-integer","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"1 7\")); // space within digits","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"-100\")); // negative; unequal to lower limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"-0\")); // negative; equal to lower limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"1000\")); // exceeds upper limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" // valid age","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" assertTrue(Age.isValidAge(\"27\")); // between lower and upper limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" assertTrue(Age.isValidAge(\"0\")); // lower limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" assertTrue(Age.isValidAge(\"150\")); // upper limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" public void equals() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" Age age \u003d new Age(\"50\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" assertTrue(age.equals(new Age(\"50\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wkxcass"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wkxcass"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wkxcass"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wkxcass"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":" assertFalse(age.equals(new Age(\"20\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wkxcass"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"wkxcass":63}},{"path":"src/test/java/seedu/address/model/person/GenderTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wkxcass"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wkxcass"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wkxcass"},"content":"public class GenderTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e new Gender(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" public void constructor_invalidGender_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" String invalidGender \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Gender(invalidGender));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wkxcass"},"content":" public void isValidGender() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" // null gender","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e Gender.isValidGender(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\"\")); // empty string","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\" \")); // spaces only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\"G\")); // invalid character","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\"Female\")); // invalid characters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" // valid gender","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"F\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"M\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"f\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"m\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" Gender gender \u003d new Gender(\"f\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" assertTrue(gender.equals(new Gender(\"F\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" assertTrue(gender.equals(gender));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wkxcass"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":" assertFalse(gender.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wkxcass"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wkxcass"},"content":" assertFalse(gender.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wkxcass"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" assertFalse(gender.equals(new Gender(\"M\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"wkxcass":60}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wkxcass"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"wkxcass":1,"-":83}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sannie-beep"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"sannie-beep"},"content":" // same email, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sannie-beep"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"sannie-beep"},"content":" // different email, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"sannie-beep"},"content":" editedBob \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"sannie-beep"},"content":" // email differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sannie-beep"},"content":" Person editedBobTwo \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_BOB.toUpperCase()).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"sannie-beep"},"content":" assertFalse(BOB.isSamePerson(editedBobTwo));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wkxcass"},"content":" // different gender -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wujiaweijoanna"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGender(VALID_GENDER_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"wujiaweijoanna"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"wkxcass"},"content":" // different age -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"wujiaweijoanna"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAge(VALID_AGE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wkxcass"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", email\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wkxcass"},"content":" + ALICE.getEmail() + \", gender\u003d\" + ALICE.getGender() + \", age\u003d\" + ALICE.getAge() + \", detail\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wkxcass"},"content":" + ALICE.getDetail() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":5,"wkxcass":7,"sannie-beep":9,"-":75}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":172}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_AGE \u003d \"159\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_GENDER \u003d BENSON.getGender().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_AGE \u003d BENSON.getAge().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_DETAIL \u003d BENSON.getDetail().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_EMAIL, VALID_GENDER, VALID_AGE, VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wkxcass"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_EMAIL, VALID_GENDER, VALID_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":" VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_EMAIL, VALID_GENDER, VALID_AGE, VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"wkxcass"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_GENDER, VALID_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"wkxcass"},"content":" VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wkxcass"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, VALID_GENDER, VALID_AGE, invalidTags, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, VALID_GENDER, INVALID_AGE, VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":3,"wkxcass":7,"-":78}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"PrishaVP"},"content":" // Modify data, overwrite existing file, and read back","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"PrishaVP":1,"-":108}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"// import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":"// import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wujiaweijoanna"},"content":"// import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" // public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" // AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" // AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" // assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" // public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":" // assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" // dataFromFile::toModelType);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":18,"-":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setGender(person.getGender());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setAge(person.getAge());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setDetail(person.getDetail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Gender} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wujiaweijoanna"},"content":" public EditPersonDescriptorBuilder withGender(String gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setGender(new Gender(gender));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Age} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wujiaweijoanna"},"content":" public EditPersonDescriptorBuilder withAge(String age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setAge(new Age(age));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Detail} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"wujiaweijoanna"},"content":" public EditPersonDescriptorBuilder withDetail(String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setDetail(new Detail(detail));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wujiaweijoanna"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":20,"-":77}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@example.com\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DEFAULT_GENDER \u003d \"F\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DEFAULT_AGE \u003d \"20\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" private Gender gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" private Age age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" private Detail detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" gender \u003d new Gender(DEFAULT_GENDER);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" gender \u003d personToCopy.getGender();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" age \u003d personToCopy.getAge();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" detail \u003d personToCopy.getDetail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Gender} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"wujiaweijoanna"},"content":" public PersonBuilder withGender(String gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d new Gender(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wujiaweijoanna"},"content":" public PersonBuilder withAge(String age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"wujiaweijoanna"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Detail} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wujiaweijoanna"},"content":" public PersonBuilder withDetail(String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d detail !\u003d null ? new Detail(detail) : null;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"wkxcass"},"content":" return new Person(name, email, gender, age, tags, detail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":28,"wkxcass":1,"-":80}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" sb.append(PREFIX_GENDER + person.getGender().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" sb.append(PREFIX_AGE + person.getAge().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" sb.append(PREFIX_DETAIL + person.getDetail().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.getGender().ifPresent(gender -\u003e sb.append(PREFIX_GENDER).append(gender.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.getAge().ifPresent(age -\u003e sb.append(PREFIX_AGE).append(age.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.getDetail().ifPresent(detail -\u003e sb.append(PREFIX_DETAIL).append(detail.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":9,"-":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"alice@example.com\").withGender(\"F\").withAge(\"20\").withDetail(\"detail\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"johnd@example.com\").withGender(\"M\").withAge(\"40\").withDetail(\"detail\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" .withGender(\"M\").withAge(\"30\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"cornelia@example.com\").withGender(\"M\").withAge(\"50\").withDetail(\"detail\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"werner@example.com\").withGender(\"F\").withAge(\"60\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"lydia@example.com\").withGender(\"F\").withAge(\"35\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"anna@example.com\").withGender(\"M\").withAge(\"36\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"stefan@example.com\").withGender(\"M\").withAge(\"17\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"hans@example.com\").withGender(\"F\").withAge(\"21\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" public static final Person AMY \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_BOB).withGender(\"M\").withAge(\"30\").withDetail(\"01-01-2024 1234\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"wkxcass":21,"-":47}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"PrishaVP"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F08-2/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"k-hian"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103-F08-2/tp/graph/badge.svg?token\u003dCW6C84Z7R4)](https://codecov.io/gh/AY2425S1-CS2103-F08-2/tp)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"PrishaVP"},"content":"# ResearchRoster","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"PrishaVP"},"content":"ResearchRoster is a desktop application designed for researchers managing large groups of study participants. ResearchRoster allows for all participants\u0027 details to be consolidated and kept track of in a single program. It is optimized for research studies as it allows researches to efficiently consolidate contacts based on specific experimental criteria, and export it to an easy-to-read format for better data organization.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"PrishaVP"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"PrishaVP"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"PrishaVP"},"content":"## Features","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"PrishaVP"},"content":"- [ ] Add participant contact with relevant details (name, gender, age, contact, research group)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"PrishaVP"},"content":"- [ ] Delete participant contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"PrishaVP"},"content":"- [ ] View a list of all participant contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"PrishaVP"},"content":"- [ ] Save participant contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"PrishaVP"},"content":"- [ ] Exit the application","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"PrishaVP"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"PrishaVP"},"content":"## Additional Information","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"PrishaVP"},"content":"* The project simulates an ongoing software project for a desktop application used for managing contact details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"PrishaVP"},"content":"* It is written in OOP fashion. It provides a reasonably well-written code base bigger (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"PrishaVP"},"content":" * It comes with a reasonable level of user and developer documentation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"PrishaVP"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"k-hian":1,"PrishaVP":17,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":"### Wong Ke Xin","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"\u003cimg src\u003d\"images/wkxcass.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":"[[github](https://github.com/wkxcass)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wkxcass"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"k-hian"},"content":"### Ng Kay Hian","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"k-hian"},"content":"\u003cimg src\u003d\"images/k-hian.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"k-hian"},"content":"[[github](http://github.com/k-hian)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"k-hian"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"k-hian"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":"### Wu Jiawei","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":"\u003cimg src\u003d\"images/wujiaweijoanna.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":"[[github](http://github.com/wujiaweijoanna)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"PrishaVP"},"content":"### Prisha V Prakash","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"PrishaVP"},"content":"\u003cimg src\u003d\"images/prishavp.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"PrishaVP"},"content":"[[github](http://github.com/PrishaVP)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"PrishaVP"},"content":"[[portfolio](team/prisha.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"PrishaVP"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"PrishaVP"},"content":"* Responsibilities: In charge of defining, assigning, and tracking project tasks.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sannie-beep"},"content":"### Sanchita Dhareshwar","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sannie-beep"},"content":"\u003cimg src\u003d\"images/sannie-beep.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"sannie-beep"},"content":"[[github](http://github.com/sannie-beep)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"sannie-beep"},"content":"[[portfolio](team/sanchita.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"k-hian":5,"PrishaVP":6,"wujiaweijoanna":5,"wkxcass":5,"sannie-beep":4,"-":37}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"sannie-beep"},"content":"Researchers who,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"sannie-beep"},"content":"* have a need to manage a significant number of study participants","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"sannie-beep"},"content":"* need an easy way to contact different experimental groups","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"sannie-beep"},"content":"* need quick access to study participants\u0027 information","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"sannie-beep"},"content":"* is reasonably comfortable using *CLI* apps","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"sannie-beep"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"sannie-beep"},"content":"As researchers have to handle large groups of participants across multiple studies, `ResearchRoster` allows them to ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"sannie-beep"},"content":"* have all participants consolidated in a single program ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"sannie-beep"},"content":"* consolidate a list of contact details based on **specific experimental criteria**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"sannie-beep"},"content":"* export it to an easy-to-read format for better data organization","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"wkxcass"},"content":"Thus, *ResearchRoster* allows researchers to save time, effort and energy whilst keeping their participant data well-organised.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can …​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"sannie-beep"},"content":"|----------|-------------|--------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | add a new person | store a new person in my contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | add details to contacts | store details of people in my contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | add multiple tags to participants | tag contacts to multiple study groups |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | delete contacts | remove old/ contacts that I no longer need |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | save my contact list | keep my contacts between sessions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"sannie-beep"},"content":"| `*` | user | exit the program | clear up my processes |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | use a program that is fast | retrieve information quickly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | work on a clean, user-friendly *UI* | navigate the platform with ease |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | list all contacts | view my list of contacts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | see usage instructions | refer to instructions when I forget how to use the app |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | be given a prompt on what format to enter details | easily use commands without having to memorise the accepted format for the CLI entry |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | edit contacts | update details of my contacts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | update participant information in bulk | quickly make changes to large groups of participants |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | archive participants who are no longer active | keep my current participant list uncluttered |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | clear all entries | efficiently restart my progress |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | search contacts by name | locate contacts without having to go through the entire list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | search for participants based on study | quickly locate specific groups of participants |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | tag participants with specific attributes (e.g., age, gender, study criteria) | quickly filter and sort participants |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | change tag details | update the contacts with experimental details |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | filter contacts by tags | view my contacts by specific groups |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | user | sort my contact list by name | locate a person easily |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"sannie-beep"},"content":"| `* * *` | researcher | categorize participants by their participation status (e.g., active, completed, withdrawn) | easily manage ongoing studies |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | hide private contact details | prevent others from viewing them without permission |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | export contacts emails (or other details) into easy to copy-paste format | copy the details (like emails) into other places easily |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | anonymize participant data when exporting or sharing | ensure participant confidentiality and legal compliance |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | assign participants randomly into sample groups | easily obtain samples for experiments |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | get reminders about upcoming sessions | be reminded of the time without manually noting it down |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | receive reminders when participant data is missing or needs updates | keep participant records thorough and current |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"sannie-beep"},"content":"| `* *` | researcher | track the progress and completion of tasks related to participants | ensure all administrative tasks are completed |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"sannie-beep"},"content":"| `* *` | user | undo the most recent command | easily undo commands if I key in the wrong information |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"k-hian"},"content":"(For all use cases below, the **System** is the `ResearchRoster` and the **Actor** is the `user/researcher`, unless specified otherwise.)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC01 - Add a new person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* -","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* new person record in the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"k-hian"},"content":"1. User requests to add a new person with provided details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster adds a new person.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"k-hian"},"content":"**Extension**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"k-hian"},"content":"* 1a. The necessary details are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"k-hian"},"content":"#### **Use case: UC02 - Delete a person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person to delete is removed from the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"k-hian"},"content":"3. User requests to delete a specific person in the list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster deletes the person.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC03 - Edit a person\u0027s record**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person record is edited on the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"k-hian"},"content":"3. User requests to edit a person\u0027s record with provided details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster edits the person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"k-hian"},"content":"* 3b. The changes to make are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC04 - Edit records in bulk**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person record(s) is/are edited on the system","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"k-hian"},"content":"1. User requests a filtered list of persons ([UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the filtered list of persons.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"k-hian"},"content":"3. User requests to apply a change to all records in the list.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster applies the change to all records in the list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"k-hian"},"content":"* 3a. The given input is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC05 - List all persons**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* list of person record(s) is shown","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"k-hian"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"k-hian"},"content":"* 2a. No existing person records.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"k-hian"},"content":" * 2a1. ResearchRoster shows a message indicating the list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"k-hian"},"content":" * 2a2. ResearchRoster shows an empty list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC06 - Find persons by criteria**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* list of person record(s) that match the criteria is shown","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"k-hian"},"content":"1. User requests to list persons that match the criteria.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"k-hian"},"content":"* 1a. The criteria is missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows a message indicating the filtered list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"k-hian"},"content":" * 1a2. ResearchRoster shows an empty filtered list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"k-hian"},"content":"* 2a. No person records that matches the criteria.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"k-hian"},"content":" * 2a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC07 - Add study group tag(s) to person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* study group tag(s) is/are added to person record","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"k-hian"},"content":"3. User requests to add study group tag(s) to a person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster adds the tag(s) to the person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"k-hian"},"content":"* 3b. The tag(s) to add are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC08 - Remove study group tag(s) from person**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously, user has added study group tag(s) to person record previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* study group tag(s) is/are removed from person record","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"k-hian"},"content":"3. User requests to remove study group tag(s) from a person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster removes the tag(s) from the person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"k-hian"},"content":"* 3b. The tag(s) to remove are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC09 - Add progress status to person record**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* progress status is added to person record","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"k-hian"},"content":"3. User requests to add progress status to a person\u0027s record.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster adds the status to the person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"k-hian"},"content":"* 3b. The given status is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"k-hian"},"content":" * 3b1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC10 - Export contacts of list**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) with email previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* a text document with list of contacts in plain text","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"k-hian"},"content":"3. User requests to export contacts of persons in the list.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster adds the list of persons\u0027 contacts to a text file for the user.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"k-hian"},"content":"* 4a. ResearchRoster is unable to write to the text file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"k-hian"},"content":" * 4a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC11 - Assign sample groups**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* study group tags are randomly added to person records based on study parameters","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"k-hian"},"content":"3. User requests to randomly assign the list of persons into sample groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster assigns the list of persons into sample groups by adding study group tags to each record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"k-hian"},"content":"* 3a. The study parameters are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"k-hian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC12 - Undo last action**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has performed an action","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* system state is restored to before last action performed","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"k-hian"},"content":"1. User requests to undo the last action.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster restores records to before the last action.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC13 - Create a session reminder**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* -","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* a reminder is set and triggered before the session","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"k-hian"},"content":"1. User requests to create a session reminder.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows a message confirming reminder is set.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster prompts the user accordingly before the session.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"k-hian"},"content":"* 1a. The session details are missing from the given input.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"k-hian"},"content":"* *a. At any time, User chooses to cancels the session reminder.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"k-hian"},"content":" * *a1. ResearchRoster shows a message confirming reminder is cancelled.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC14 - Track study progress**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added progress status to person(s) record previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* progress status for study is shown","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"k-hian"},"content":"1. User requests to track progress for a study.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the progress status of persons in the study.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"k-hian"},"content":"* 1a. The given input is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"k-hian"},"content":" * 1a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"k-hian"},"content":" Use case restarts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"k-hian"},"content":"#### **Use Case: UC15 - Archive old records**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"k-hian"},"content":"* *Preconditions:* user has added person(s) previously","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"k-hian"},"content":"* *Guarantees:* person records are archived","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"k-hian"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"k-hian"},"content":"1. User requests a list of persons ([UC05](#use-case-uc05---list-all-persons), [UC06](#use-case-uc06---find-persons-by-criteria)).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"k-hian"},"content":"2. ResearchRoster shows the list of persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"k-hian"},"content":"3. User requests to archive a person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"k-hian"},"content":"4. ResearchRoster archives the person\u0027s record.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"k-hian"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"k-hian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"k-hian"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"k-hian"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"k-hian"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"k-hian"},"content":" * 3a1. ResearchRoster shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"wkxcass"},"content":"#### General requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"wkxcass"},"content":"* The software should be offered as a free product/service.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"wkxcass"},"content":"* The source code should be open source.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"wkxcass"},"content":"#### Constraints","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"wkxcass"},"content":"* The data should be stored locally in a human-editable text file (allowing advanced users to modify data directly).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"wkxcass"},"content":"* The software should have minimal reliance on network connectivity and include fallback mechanisms for any network-dependent features.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"wkxcass"},"content":"* The software should not depend on the developer’s remote server.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"wkxcass"},"content":"* The software should be distributed as a single `.jar` file. If that is not feasible, the `.jar` file and any required files should be packaged into a single `.zip` file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"wkxcass"},"content":"* The software should not exceed 100 MB in size, and document files (i.e., `PDF`s of documentation) should not exceed 15 MB each. Neither should be unnecessarily bloated.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"wkxcass"},"content":"* Any third-party frameworks, libraries or services used should be free, open-source (except for services) and permissively licensed. They should not require users to install additional software or create accounts.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"wkxcass"},"content":"* The developer and user guides should be `PDF`-friendly (by avoiding expandable panels, embedded videos, animated `GIF`s etc.).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"wkxcass"},"content":"#### Quality","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"wkxcass"},"content":"* The software should be optimized for the target users: fast typists should be able to complete most tasks more efficiently using the _CLI_ than a _GUI_.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"wkxcass"},"content":"* The software should be intuitive and easy for first-time users to navigate (by providing sample data, a `help` command to access the user guide etc.).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"wkxcass"},"content":"* Multistep commands for onboarding (if any) should have a streamlined, one-step equivalent for regular or expert users.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"wkxcass"},"content":"* The _GUI_ should be intuitive for users who are not tech-savvy.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"wkxcass"},"content":"#### Performance and Efficiency","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"wkxcass"},"content":"* The software should respond to user actions within 5 seconds.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"wkxcass"},"content":"#### Scalability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":740,"author":{"gitId":"wkxcass"},"content":"* The software should be able to accommodate up to 5,000 contacts, without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"wkxcass"},"content":"#### Reliability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"wkxcass"},"content":"* The software should maintain stable operation (i.e., function as intended) at least 99.9% of the time.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"wkxcass"},"content":"#### Robustness","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"wkxcass"},"content":"* **Disaster Recovery and Fault Tolerance:** The software should gracefully handle exceptional events (e.g., errors or failures) without losing data or compromising functionality (e.g., crashing).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"wkxcass"},"content":"* **Error Handling:** Clear, informative error messages should be provided, and errors logged to aid troubleshooting and support.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"wkxcass"},"content":"#### Compliance","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"wkxcass"},"content":"* The software should protect research participants\u0027 confidentiality and comply with relevant legal standards (by safeguarding _private contact details_).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":754,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":755,"author":{"gitId":"wkxcass"},"content":"#### Portability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":756,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":757,"author":{"gitId":"wkxcass"},"content":"* The software should work without requiring an installer.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":758,"author":{"gitId":"wkxcass"},"content":"* The software should run on any _mainstream OS_ that has `Java 17` (and no other Java version installed).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":759,"author":{"gitId":"wkxcass"},"content":"* The _GUI_ should be free from resolution-related inconveniences for standard screen resolutions (1920x1080 or higher) and screen scales (100% and 125%).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":760,"author":{"gitId":"wkxcass"},"content":"* The _GUI_ should remain functional, though not necessarily optimized, for resolutions of 1280x720 or higher and screen scales of 150%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":761,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":762,"author":{"gitId":"wkxcass"},"content":"#### Maintainability","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":763,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":764,"author":{"gitId":"wkxcass"},"content":"* **Code Quality:** The code should be well-maintained and follow best practices.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":765,"author":{"gitId":"wkxcass"},"content":"* **Documentation:** Clear, consistent and accurate documentation is required.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":766,"author":{"gitId":"wkxcass"},"content":"* **Testability:** Implemented features should not impede testing or make the software difficult to test.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":767,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":768,"author":{"gitId":"wkxcass"},"content":"#### Process Requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":769,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":770,"author":{"gitId":"wkxcass"},"content":"* The project should follow a development schedule that delivers incremental versions on a weekly basis.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":771,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":772,"author":{"gitId":"wkxcass"},"content":"#### Notes about project scope","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":773,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":774,"author":{"gitId":"wkxcass"},"content":"* Input should primarily be via the _CLI_, with the _GUI_ mainly providing visual feedback.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":775,"author":{"gitId":"wkxcass"},"content":"* The software does not need to support the printing of reports or contacting research participants.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":776,"author":{"gitId":"wkxcass"},"content":"* The software is intended for single-user operation, not multi-user functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":777,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":778,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":779,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":780,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":781,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":782,"author":{"gitId":"wkxcass"},"content":"* **UI**: User Interface - The medium through which users interact with a system, encompassing both graphical (*GUI*) and text-based (*CLI*) elements","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":783,"author":{"gitId":"sannie-beep"},"content":"* **GUI**: Graphical User Interface - A visual-based interface where users interact with the system through graphical elements like icons and windows","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":784,"author":{"gitId":"sannie-beep"},"content":"* **CLI**: Command Line Interface - A text-based interface where users interact with the system by typing commands","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":785,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":786,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":787,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":788,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":789,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":790,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":791,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":792,"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","isFullCredit":false},{"lineNumber":793,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":794,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":795,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":796,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":797,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":798,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":799,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":800,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":801,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":802,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":803,"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","isFullCredit":false},{"lineNumber":804,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":805,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":806,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":807,"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","isFullCredit":false},{"lineNumber":808,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":809,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":810,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":811,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":812,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":813,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":814,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":815,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":816,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":817,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":818,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":819,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":820,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":821,"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","isFullCredit":false},{"lineNumber":822,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":823,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":824,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":825,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":826,"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","isFullCredit":false},{"lineNumber":827,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":828,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":829,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":830,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":831,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":832,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":833,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":834,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":835,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":836,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":837,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"k-hian":353,"wkxcass":65,"sannie-beep":45,"-":374}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"title: \"ResearchRoster\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":"repository: \"AY2425S1-CS2103T-F08-2/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"wujiaweijoanna"},"content":" content: \"ResearchRoster\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":1,"-":294}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"PrishaVP"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Unable save contacts due to unexpected I/O error!\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"PrishaVP"},"content":" \"Unable to save contacts due to denied storage data file access!\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"PrishaVP":2,"-":86}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format!\\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" .append(\"; Gender: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":" .append(person.getGender())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" .append(\"; Age: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" .append(person.getAge())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":" .append(\"; Details: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" .append(person.getDetail())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":8,"-":45}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" + \"[\" + PREFIX_GENDER + \"GENDER] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_DETAIL + \"DETAIL] \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" + PREFIX_GENDER + \"M \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" + PREFIX_AGE + \"30 \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" + PREFIX_DETAIL + \"Some detail here \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" + PREFIX_TAG + \"friends Group1\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Added successfully! Added participant: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":7,"wkxcass":7,"-":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted successfully!\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" + \"Deleted participant: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_GENDER + \"GENDER] \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" + \"[\" + PREFIX_DETAIL + \"DETAIL]...\\n\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" Gender updatedGender \u003d editPersonDescriptor.getGender().orElse(personToEdit.getGender());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wujiaweijoanna"},"content":" Age updatedAge \u003d editPersonDescriptor.getAge().orElse(personToEdit.getAge());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wujiaweijoanna"},"content":" Detail updatedDetail \u003d editPersonDescriptor.getDetail().orElse(personToEdit.getDetail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"wkxcass"},"content":" return new Person(updatedName, updatedEmail, updatedGender, updatedAge, updatedTags, updatedDetail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"wujiaweijoanna"},"content":" private Gender gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"wujiaweijoanna"},"content":" private Age age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"wujiaweijoanna"},"content":" private Detail detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wujiaweijoanna"},"content":" setGender(toCopy.gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"wkxcass"},"content":" setAge(toCopy.age);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"wkxcass"},"content":" setDetail(toCopy.detail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wkxcass"},"content":" return CollectionUtil.isAnyNonNull(name, email, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"wujiaweijoanna"},"content":" public void setGender(Gender gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"wujiaweijoanna"},"content":" public Optional\u003cGender\u003e getGender() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"wujiaweijoanna"},"content":" return Optional.ofNullable(gender); }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"wujiaweijoanna"},"content":" public void setAge(Age age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"wujiaweijoanna"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"wujiaweijoanna"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"wujiaweijoanna"},"content":" public void setDetail(Detail detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d (detail !\u003d null) ? detail : null;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"wujiaweijoanna"},"content":" public Optional\u003cDetail\u003e getDetail() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"wujiaweijoanna"},"content":" return Optional.ofNullable(detail);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":36,"wkxcass":4,"-":210}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"k-hian"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting ResearchRoster as requested ...\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"k-hian":1,"-":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"PrishaVP"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all participants\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"PrishaVP"},"content":" public static final String MESSAGE_EMPTY \u003d \"No saved participants\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"PrishaVP"},"content":" if (model.getFilteredPersonList().isEmpty()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"PrishaVP"},"content":" return new CommandResult(MESSAGE_EMPTY);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"PrishaVP"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"PrishaVP":5,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" PREFIX_DETAIL, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE, PREFIX_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" Gender gender \u003d ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" Detail detail \u003d argMultimap.getValue(PREFIX_DETAIL).map(ParserUtil::parseDetail).orElse(null);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wkxcass"},"content":" Person person \u003d new Person(name, email, gender, age, tagList, detail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":10,"wkxcass":5,"-":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":" public static final Prefix PREFIX_GENDER \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"a/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":" public static final Prefix PREFIX_DETAIL \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":2,"wkxcass":1,"-":13}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" PREFIX_DETAIL, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE, PREFIX_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" if (argMultimap.getValue(PREFIX_GENDER).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" editPersonDescriptor.setGender(ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wujiaweijoanna"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":" editPersonDescriptor.setAge(ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wujiaweijoanna"},"content":" if (argMultimap.getValue(PREFIX_DETAIL).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wujiaweijoanna"},"content":" editPersonDescriptor.setDetail(ParserUtil.parseDetail(argMultimap.getValue(PREFIX_DETAIL).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":11,"wkxcass":3,"-":76}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wujiaweijoanna"},"content":" * Parses a {@code String gender} into a {@code Gender}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" * @throws ParseException if the given {@code gender} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wujiaweijoanna"},"content":" public static Gender parseGender(String gender) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wujiaweijoanna"},"content":" String trimmedGender \u003d gender.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Gender.isValidGender(trimmedGender)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"wujiaweijoanna"},"content":" throw new ParseException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"wujiaweijoanna"},"content":" return new Gender(trimmedGender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wujiaweijoanna"},"content":" * Parses a {@code String age} into an {@code Age}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wujiaweijoanna"},"content":" * @throws ParseException if the given {@code age} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wujiaweijoanna"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"wujiaweijoanna"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wujiaweijoanna"},"content":" * Parses a {@code String detail} into a {@code Detail}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wkxcass"},"content":" public static Detail parseDetail(String detail) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(detail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wujiaweijoanna"},"content":" String trimmedDetail \u003d detail.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"wujiaweijoanna"},"content":" return new Detail(trimmedDetail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":28,"wkxcass":1,"-":106}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"PrishaVP"},"content":" * Models an address book through which ResearchRoster handles all contact information","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"PrishaVP":1,"-":130}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"PrishaVP"},"content":" * Unmodifiable view of an address book through which ResearchRoster","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"PrishaVP"},"content":" * handles all contact information","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"PrishaVP":2,"-":16}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"public class Age {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"sannie-beep"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" \"Age should only contain a non-negative integer, between 0 and 150 (inclusive)\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":" /*","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * The age must be a non-negative integer.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d+\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sannie-beep"},"content":" * @param age A valid age.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" public Age(String age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"sannie-beep"},"content":" this.value \u003d age;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" * A valid age should be a non-negative integer, between 0 and 150 (inclusive).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"sannie-beep"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"sannie-beep"},"content":" int age \u003d Integer.parseInt(test);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sannie-beep"},"content":" return age \u003e\u003d 0 \u0026\u0026 age \u003c\u003d 150;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"sannie-beep"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sannie-beep"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"sannie-beep"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wujiaweijoanna"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wujiaweijoanna"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wujiaweijoanna"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wujiaweijoanna"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"wujiaweijoanna"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"wujiaweijoanna"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wujiaweijoanna"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wujiaweijoanna"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wujiaweijoanna"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":43,"wkxcass":17,"sannie-beep":15}},{"path":"src/main/java/seedu/address/model/person/Detail.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":" * Represents additional details of a person, including a specific time format.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wkxcass"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"public class Detail {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wujiaweijoanna"},"content":" * Constructs a {@code Detail}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wujiaweijoanna"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * @param detail A valid detail.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wujiaweijoanna"},"content":" public Detail(String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(detail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":" this.value \u003d detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" public Detail() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" this.value \u003d \"\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" if (!(other instanceof Detail)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":" Detail otherDetail \u003d (Detail) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" return value.equals(otherDetail.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":49,"wkxcass":3}},{"path":"src/main/java/seedu/address/model/person/Gender.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wujiaweijoanna"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":" * Represents a Person\u0027s gender in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"public class Gender {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" \"Gender should only be \u0027F\u0027 / \u0027f\u0027 (Female) or \u0027M\u0027 / \u0027m\u0027 (Male)\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":" /*","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * The gender must be either \u0027F\u0027, \u0027f\u0027, \u0027M\u0027 or \u0027m\u0027.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" public static final String VALIDATION_REGEX \u003d \"^[FfMm]$\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" * Constructs a {@code Gender}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wkxcass"},"content":" * @param gender A valid gender (\u0027F\u0027, \u0027f\u0027, \u0027M\u0027 or \u0027m\u0027).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" * \u0027f\u0027 is stored as \u0027F\u0027; \u0027m\u0027 is stored as \u0027M\u0027.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" public Gender(String gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" requireNonNull(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" checkArgument(isValidGender(gender), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" this.value \u003d gender.toUpperCase();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" public static boolean isValidGender(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wujiaweijoanna"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" if (!(other instanceof Gender)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" Gender otherGender \u003d (Gender) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" return value.equals(otherGender.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wujiaweijoanna"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":44,"wkxcass":17}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":1,"-":66}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" private final Gender gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" private final Age age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":" private final Detail detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" public Person(Name name, Email email, Gender gender, Age age, Set\u003cTag\u003e tags, Detail detail) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" requireAllNonNull(name, email, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d (detail !\u003d null) ? detail : new Detail(\"\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" public Gender getGender() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" return gender; }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" public Age getAge() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" return age; }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wujiaweijoanna"},"content":" public Detail getDetail() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wujiaweijoanna"},"content":" return detail; }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"sannie-beep"},"content":" * Returns true if both persons have the same email.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wkxcass"},"content":" * This weaker notion of equality between two persons allows researchers to","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wkxcass"},"content":" * differentiate participants by email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"sannie-beep"},"content":" \u0026\u0026 otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wkxcass"},"content":" \u0026\u0026 gender.equals(otherPerson.gender)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wkxcass"},"content":" \u0026\u0026 age.equals(otherPerson.age)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wkxcass"},"content":" \u0026\u0026 detail.equals(otherPerson.detail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"wkxcass"},"content":" return Objects.hash(name, email, gender, age, detail, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"wujiaweijoanna"},"content":" .add(\"gender\", gender)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"wujiaweijoanna"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wujiaweijoanna"},"content":" .add(\"detail\", detail)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":17,"wkxcass":8,"sannie-beep":2,"-":96}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Alex Yeoh\"), new Email(\"alexyeoh@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"friends\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Bernice Yu\"), new Email(\"berniceyu@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"colleagues\", \"friends\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Email(\"charlotte@example.com\"), new Gender(\"F\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"neighbours\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"David Li\"), new Email(\"lidavid@example.com\"), new Gender(\"M\"), new Age(\"19\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" getTagSet(\"family\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Email(\"irfan@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"classmates\"), new Detail(\"detail\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Email(\"royb@example.com\"), new Gender(\"M\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" new Age(\"19\"), getTagSet(\"colleagues\"), new Detail(\"detail\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":10,"wkxcass":11,"-":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" private final String gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wujiaweijoanna"},"content":" private final String age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" private final String detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" @JsonProperty(\"gender\") String gender, @JsonProperty(\"age\") String age,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"detail\") String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" gender \u003d source.getGender().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" age \u003d source.getAge().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wujiaweijoanna"},"content":" detail \u003d source.getDetail().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":" if (gender \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Gender.isValidGender(gender)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wujiaweijoanna"},"content":" final Gender modelGender \u003d new Gender(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wujiaweijoanna"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wujiaweijoanna"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"wujiaweijoanna"},"content":" final Age modelAge \u003d new Age(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"wujiaweijoanna"},"content":" final Detail modelDetail \u003d new Detail(detail);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"wkxcass"},"content":" return new Person(modelName, modelEmail, modelGender, modelAge, modelTags, modelDetail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":29,"wkxcass":3,"-":84}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"k-hian"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"k-hian"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"k-hian"},"content":" * The Main Window. Provides the basic application layout containing a menu bar","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"k-hian"},"content":" * and space where other JavaFX elements can be placed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"k-hian"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"k-hian"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666 is fixed in later version of","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"k-hian"},"content":" * SDK.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"k-hian"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will not","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"k-hian"},"content":" * work when the focus is in them because the key event is consumed by the","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"k-hian"},"content":" * TextInputControl(s).","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"k-hian"},"content":" * help window purposely so to support accelerators even when focus is in","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"k-hian"},"content":" * CommandBox or ResultDisplay.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"k-hian"},"content":" resultDisplay.setFeedbackToUser(ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"k-hian"},"content":" // Disable commandBox upon exiting","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"k-hian"},"content":" commandBoxPlaceholder.getChildren().get(0).setDisable(true);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"k-hian"},"content":" new Thread(() -\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"k-hian"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"k-hian"},"content":" // Display FeedbackToUser for 3 seconds before exiting","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"k-hian"},"content":" Thread.sleep(3000);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"k-hian"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"k-hian"},"content":" ; // Do nothing","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"k-hian"},"content":" } finally {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"k-hian"},"content":" Platform.runLater(() -\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"k-hian"},"content":" });","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"k-hian"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"k-hian"},"content":" }).start();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"k-hian":26,"-":187}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" private Label gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" private Label age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" @FXML","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":" private Label detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wujiaweijoanna"},"content":" gender.setText(person.getGender().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wujiaweijoanna"},"content":" age.setText(person.getAge().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wujiaweijoanna"},"content":" detail.setText(person.getDetail().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":7,"-":55}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"PrishaVP"},"content":" title\u003d\"ResearchRoster\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"PrishaVP":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" \u003cHBox spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" \u003cLabel fx:id\u003d\"gender\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$gender\" /\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" \u003cLabel fx:id\u003d\"detail\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$detail\" /\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":3,"wkxcass":2,"-":34}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"PrishaVP"},"content":" public void execute_validCommand_noError() throws Exception {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"PrishaVP"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY, model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wujiaweijoanna"},"content":" // public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"wujiaweijoanna"},"content":" // LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wujiaweijoanna"},"content":" //","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"wujiaweijoanna"},"content":" // public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"wujiaweijoanna"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"wujiaweijoanna"},"content":" // LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"wkxcass"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"PrishaVP":2,"wujiaweijoanna":11,"wkxcass":1,"-":158}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wkxcass"},"content":" * A default model stub that have all the methods failing.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"wkxcass":1,"-":203}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_GENDER_AMY \u003d \"F\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_GENDER_BOB \u003d \"M\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_AGE_AMY \u003d \"20\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_AGE_BOB \u003d \"30\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_DETAIL_AMY \u003d \"detail\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String VALID_DETAIL_BOB \u003d \"01-01-2024 1234\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String GENDER_DESC_AMY \u003d \" \" + PREFIX_GENDER + VALID_GENDER_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String GENDER_DESC_BOB \u003d \" \" + PREFIX_GENDER + VALID_GENDER_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String AGE_DESC_BOB \u003d \" \" + PREFIX_AGE + VALID_AGE_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DETAIL_DESC_AMY \u003d \" \" + PREFIX_DETAIL + VALID_DETAIL_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DETAIL_DESC_BOB \u003d \" \" + PREFIX_DETAIL + VALID_DETAIL_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String INVALID_GENDER_DESC \u003d \" \" + PREFIX_GENDER + \"A\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String INVALID_AGE_DESC \u003d \" \" + PREFIX_AGE + \"A\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_AMY).withGender(VALID_GENDER_AMY).withAge(VALID_AGE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wujiaweijoanna"},"content":" .withTags(VALID_TAG_FRIEND).withDetail(VALID_DETAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_BOB).withGender(VALID_GENDER_BOB).withAge(VALID_AGE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wujiaweijoanna"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withDetail(VALID_DETAIL_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":19,"wkxcass":2,"-":111}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":180}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" // different gender -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" // different age -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wkxcass"},"content":" + editPersonDescriptor.getName().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"wkxcass":5,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DETAIL_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DETAIL_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GENDER_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wkxcass"},"content":" + GENDER_DESC_BOB + AGE_DESC_BOB + TAG_DESC_FRIEND + DETAIL_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wkxcass"},"content":" NAME_DESC_BOB + EMAIL_DESC_BOB + GENDER_DESC_BOB + AGE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + DETAIL_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wkxcass"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + EMAIL_DESC_BOB + GENDER_DESC_BOB + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + DETAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"wkxcass"},"content":" validExpectedPersonString + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_EMAIL, PREFIX_GENDER,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wkxcass"},"content":" PREFIX_AGE, PREFIX_DETAIL));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_GENDER_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_GENDER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_AGE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_GENDER_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_GENDER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_AGE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"wujiaweijoanna"},"content":" public void parse_tagFieldsMissing_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"wujiaweijoanna"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withDetail(\"detail\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"wujiaweijoanna"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"wujiaweijoanna"},"content":" + GENDER_DESC_AMY + AGE_DESC_AMY + DETAIL_DESC_AMY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"wujiaweijoanna"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"wujiaweijoanna"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"wujiaweijoanna"},"content":" public void parse_detailFieldsMissing_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"wujiaweijoanna"},"content":" // no detail","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"wujiaweijoanna"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"wujiaweijoanna"},"content":" + GENDER_DESC_AMY + AGE_DESC_AMY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + GENDER_DESC_BOB + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_EMAIL_DESC + GENDER_DESC_BOB + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + INVALID_GENDER_DESC + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Gender.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + GENDER_DESC_BOB + INVALID_AGE_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + INVALID_GENDER_DESC + AGE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + DETAIL_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":18,"wkxcass":47,"-":120}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DETAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GENDER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GENDER_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DETAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wkxcass"},"content":" // invalid gender followed by valid age","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_GENDER_AMY + VALID_AGE_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wkxcass"},"content":" String userInput \u003d targetIndex.getOneBased() + GENDER_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wkxcass"},"content":" + EMAIL_DESC_AMY + AGE_DESC_AMY + NAME_DESC_AMY + DETAIL_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_AMY).withGender(VALID_GENDER_BOB).withAge(VALID_AGE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wkxcass"},"content":" .withDetail(VALID_DETAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wkxcass"},"content":" String userInput \u003d targetIndex.getOneBased() + GENDER_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"wkxcass"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wkxcass"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"wkxcass"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"wkxcass"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"wkxcass"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wkxcass"},"content":" userInput \u003d targetIndex.getOneBased() + GENDER_DESC_AMY + AGE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"wkxcass"},"content":" + TAG_DESC_FRIEND + GENDER_DESC_AMY + AGE_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"wkxcass"},"content":" + GENDER_DESC_BOB + AGE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"wkxcass"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_GENDER_DESC + INVALID_AGE_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"wkxcass"},"content":" + INVALID_GENDER_DESC + INVALID_AGE_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"wkxcass"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL, PREFIX_GENDER, PREFIX_AGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"wkxcass":33,"-":157}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String INVALID_GENDER \u003d \"A\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String INVALID_AGE \u003d \"A\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_GENDER \u003d \"F\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_AGE \u003d \"30\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_DETAIL \u003d \"detail\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGender((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGender(INVALID_GENDER));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":" Gender expectedGender \u003d new Gender(VALID_GENDER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedGender, ParserUtil.parseGender(VALID_GENDER));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseGender_validValueWithWhitespace_returnsTrimmedGender() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"wujiaweijoanna"},"content":" String genderWithWhitespace \u003d WHITESPACE + VALID_GENDER + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"wujiaweijoanna"},"content":" Gender expectedGender \u003d new Gender(VALID_GENDER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedGender, ParserUtil.parseGender(genderWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAge((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"wujiaweijoanna"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAge(INVALID_AGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wujiaweijoanna"},"content":" Age expectedAddress \u003d new Age(VALID_AGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedAddress, ParserUtil.parseAge(VALID_AGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseAge_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"wujiaweijoanna"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_AGE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"wujiaweijoanna"},"content":" Age expectedAge \u003d new Age(VALID_AGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedAge, ParserUtil.parseAge(addressWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"wujiaweijoanna"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"wujiaweijoanna"},"content":" public void parseDetail_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"wujiaweijoanna"},"content":" Detail expectedDetail \u003d new Detail(VALID_DETAIL);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"wujiaweijoanna"},"content":" assertEquals(expectedDetail, ParserUtil.parseDetail(VALID_DETAIL));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":36,"-":169}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":105}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wkxcass"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wkxcass"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wkxcass"},"content":"public class AgeTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wkxcass"},"content":" public void isValidAge() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" // null age","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" // invalid age","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"one\")); // non-numeric","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"0.00\")); // non-integer","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"1 7\")); // space within digits","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"-100\")); // negative; unequal to lower limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"-0\")); // negative; equal to lower limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" assertFalse(Age.isValidAge(\"1000\")); // exceeds upper limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" // valid age","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" assertTrue(Age.isValidAge(\"27\")); // between lower and upper limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" assertTrue(Age.isValidAge(\"0\")); // lower limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" assertTrue(Age.isValidAge(\"150\")); // upper limit","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" public void equals() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" Age age \u003d new Age(\"50\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" assertTrue(age.equals(new Age(\"50\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wkxcass"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wkxcass"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wkxcass"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wkxcass"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":" assertFalse(age.equals(new Age(\"20\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wkxcass"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"wkxcass":63}},{"path":"src/test/java/seedu/address/model/person/GenderTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wkxcass"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wkxcass"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wkxcass"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wkxcass"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wkxcass"},"content":"public class GenderTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wkxcass"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e new Gender(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wkxcass"},"content":" public void constructor_invalidGender_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wkxcass"},"content":" String invalidGender \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wkxcass"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Gender(invalidGender));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wkxcass"},"content":" public void isValidGender() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" // null gender","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wkxcass"},"content":" assertThrows(NullPointerException.class, () -\u003e Gender.isValidGender(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" // invalid gender","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\"\")); // empty string","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\" \")); // spaces only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\"G\")); // invalid character","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" assertFalse(Gender.isValidGender(\"Female\")); // invalid characters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" // valid gender","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"F\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"M\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"f\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" assertTrue(Gender.isValidGender(\"m\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" Gender gender \u003d new Gender(\"f\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" assertTrue(gender.equals(new Gender(\"F\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" assertTrue(gender.equals(gender));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wkxcass"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":" assertFalse(gender.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wkxcass"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wkxcass"},"content":" assertFalse(gender.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wkxcass"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wkxcass"},"content":" assertFalse(gender.equals(new Gender(\"M\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wkxcass"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wkxcass"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"wkxcass":60}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wkxcass"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"wkxcass":1,"-":83}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sannie-beep"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GENDER_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"sannie-beep"},"content":" // same email, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wkxcass"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"sannie-beep"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"sannie-beep"},"content":" // different email, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"sannie-beep"},"content":" editedBob \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"sannie-beep"},"content":" // email differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"sannie-beep"},"content":" Person editedBobTwo \u003d new PersonBuilder(BOB).withEmail(VALID_EMAIL_BOB.toUpperCase()).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"sannie-beep"},"content":" assertFalse(BOB.isSamePerson(editedBobTwo));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"sannie-beep"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wkxcass"},"content":" // different gender -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wujiaweijoanna"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGender(VALID_GENDER_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"wujiaweijoanna"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"wkxcass"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"wkxcass"},"content":" // different age -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"wujiaweijoanna"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAge(VALID_AGE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wkxcass"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", email\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wkxcass"},"content":" + ALICE.getEmail() + \", gender\u003d\" + ALICE.getGender() + \", age\u003d\" + ALICE.getAge() + \", detail\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wkxcass"},"content":" + ALICE.getDetail() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":5,"wkxcass":7,"sannie-beep":9,"-":75}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wkxcass"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"wkxcass":2,"-":172}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"sannie-beep"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"sannie-beep"},"content":" private static final String INVALID_AGE \u003d \"159\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_GENDER \u003d BENSON.getGender().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_AGE \u003d BENSON.getAge().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" private static final String VALID_DETAIL \u003d BENSON.getDetail().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wkxcass"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_EMAIL, VALID_GENDER, VALID_AGE, VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wkxcass"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_EMAIL, VALID_GENDER, VALID_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wkxcass"},"content":" VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wkxcass"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_EMAIL, VALID_GENDER, VALID_AGE, VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"wkxcass"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_GENDER, VALID_AGE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"wkxcass"},"content":" VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"wkxcass"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, VALID_GENDER, VALID_AGE, invalidTags, VALID_DETAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"sannie-beep"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"sannie-beep"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"sannie-beep"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"sannie-beep"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, VALID_GENDER, INVALID_AGE, VALID_TAGS, VALID_DETAIL);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"sannie-beep"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"sannie-beep"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"sannie-beep"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":3,"wkxcass":7,"sannie-beep":9,"-":69}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"PrishaVP"},"content":" // Modify data, overwrite existing file, and read back","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"PrishaVP":1,"-":108}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"// import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wujiaweijoanna"},"content":"// import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wujiaweijoanna"},"content":"// import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" // public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wujiaweijoanna"},"content":" // AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wujiaweijoanna"},"content":" // AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" // assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" // @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" // public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wujiaweijoanna"},"content":" // JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wujiaweijoanna"},"content":" // assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wujiaweijoanna"},"content":" // dataFromFile::toModelType);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wujiaweijoanna"},"content":" // }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":18,"-":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setGender(person.getGender());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setAge(person.getAge());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setDetail(person.getDetail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Gender} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wujiaweijoanna"},"content":" public EditPersonDescriptorBuilder withGender(String gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setGender(new Gender(gender));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Age} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"wujiaweijoanna"},"content":" public EditPersonDescriptorBuilder withAge(String age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setAge(new Age(age));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Detail} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"wujiaweijoanna"},"content":" public EditPersonDescriptorBuilder withDetail(String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.setDetail(new Detail(detail));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wujiaweijoanna"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":20,"-":77}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wujiaweijoanna"},"content":"import seedu.address.model.person.Gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@example.com\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DEFAULT_GENDER \u003d \"F\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wujiaweijoanna"},"content":" public static final String DEFAULT_AGE \u003d \"20\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wujiaweijoanna"},"content":" private Gender gender;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wujiaweijoanna"},"content":" private Age age;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wujiaweijoanna"},"content":" private Detail detail;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wujiaweijoanna"},"content":" gender \u003d new Gender(DEFAULT_GENDER);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wujiaweijoanna"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wujiaweijoanna"},"content":" gender \u003d personToCopy.getGender();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" age \u003d personToCopy.getAge();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" detail \u003d personToCopy.getDetail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Gender} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"wujiaweijoanna"},"content":" public PersonBuilder withGender(String gender) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"wujiaweijoanna"},"content":" this.gender \u003d new Gender(gender);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wujiaweijoanna"},"content":" public PersonBuilder withAge(String age) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wujiaweijoanna"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"wujiaweijoanna"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"wujiaweijoanna"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wujiaweijoanna"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wujiaweijoanna"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wujiaweijoanna"},"content":" * Sets the {@code Detail} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"wujiaweijoanna"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"wujiaweijoanna"},"content":" public PersonBuilder withDetail(String detail) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"wujiaweijoanna"},"content":" this.detail \u003d detail !\u003d null ? new Detail(detail) : null;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"wkxcass"},"content":" return new Person(name, email, gender, age, tags, detail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":28,"wkxcass":1,"-":80}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAIL;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wujiaweijoanna"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wujiaweijoanna"},"content":" sb.append(PREFIX_GENDER + person.getGender().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wujiaweijoanna"},"content":" sb.append(PREFIX_AGE + person.getAge().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wujiaweijoanna"},"content":" sb.append(PREFIX_DETAIL + person.getDetail().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.getGender().ifPresent(gender -\u003e sb.append(PREFIX_GENDER).append(gender.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.getAge().ifPresent(age -\u003e sb.append(PREFIX_AGE).append(age.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wujiaweijoanna"},"content":" descriptor.getDetail().ifPresent(detail -\u003e sb.append(PREFIX_DETAIL).append(detail.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"wujiaweijoanna":9,"-":56}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"alice@example.com\").withGender(\"F\").withAge(\"20\").withDetail(\"detail\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"johnd@example.com\").withGender(\"M\").withAge(\"40\").withDetail(\"detail\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wkxcass"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wkxcass"},"content":" .withGender(\"M\").withAge(\"30\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wkxcass"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"cornelia@example.com\").withGender(\"M\").withAge(\"50\").withDetail(\"detail\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wkxcass"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wkxcass"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"werner@example.com\").withGender(\"F\").withAge(\"60\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wkxcass"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"lydia@example.com\").withGender(\"F\").withAge(\"35\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wkxcass"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"anna@example.com\").withGender(\"M\").withAge(\"36\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wkxcass"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"stefan@example.com\").withGender(\"M\").withAge(\"17\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wkxcass"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wkxcass"},"content":" .withEmail(\"hans@example.com\").withGender(\"F\").withAge(\"21\").withDetail(\"detail\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wkxcass"},"content":" public static final Person AMY \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wkxcass"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wkxcass"},"content":" .withEmail(VALID_EMAIL_BOB).withGender(\"M\").withAge(\"30\").withDetail(\"01-01-2024 1234\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wkxcass"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"wkxcass":21,"-":47}}] diff --git a/AY2425S1-CS2103T-F08-2_tp_master/commits.json b/AY2425S1-CS2103T-F08-2_tp_master/commits.json index 05ff63cc..ad170ada 100644 --- a/AY2425S1-CS2103T-F08-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-F08-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"k-hian":[{"date":"2024-09-20","commitResults":[{"hash":"c21420d924d9d419f9cece8286f7c978d3540c7c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"d0194caa1d5e0ce05872caf7315a0da817c86102","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Update AboutUs.md with Kay Hian\u0027s info\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"693037bca5d8825ebed9576eb493640ed6ff0767","isMergeCommit":false,"messageTitle":"Fix AboutUs.md format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd1a4261604399276c93b8ea1b193d437f669234","isMergeCommit":true,"messageTitle":"Resolve conflicts for branch-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3353e1a3103d5c1f8c6841dbe056b88bcca6e74a","isMergeCommit":true,"messageTitle":"Merge pull request #16 from k-hian/branch-AboutUs","messageBody":"Update AboutUs page - Kay Hian","fileTypesAndContributionMap":{}},{"hash":"0ac3069159075510abebdb69a58b4672c707d7ca","isMergeCommit":false,"messageTitle":"Update DG use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":357,"deletions":7}}}]},{"date":"2024-10-04","commitResults":[{"hash":"a39d90bcd30744faf88f5c6243dbf204185bc912","isMergeCommit":false,"messageTitle":"Fix bugs in DG","messageBody":"Some step 1(s) in UCs are conflicting with the stated preconditions.\n\nThe respective step 1(s) are removed.\n\nMinor fixes to standardise language and grammatical errors.\n","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":70}}},{"hash":"ed1815314884b964cf0f68492e16c6594f054551","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UseCases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c8e616127a0c663fd9a44334ee121fb45f814394","isMergeCommit":false,"messageTitle":"Standardise language for DG use cases","messageBody":"Previous fix missed a few necessary standardisations made here.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ad72befb3552a2bb2abd7403b0a36e82caebc19d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from k-hian/branch-UseCases","messageBody":"DG: update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"17a5d3fd4d5a0aeb42b0b6479a4125cdc53927cb","isMergeCommit":false,"messageTitle":"Exit command: display exit message","messageBody":"The feedbackToUser is passed to the resultDisplay UI, but the\napplication closes too quickly for the feedback to be rendered to the\nuser.\n\nLet\u0027s add a 3 second delay upon exit.\n\nRunning the delay (and handleExit behaviour) on a separate concurrent\nthread allows the feedbackToUser to be rendered by FXML.\n\nThe duration of the delay (3 seconds) is arbitrarily selected, and can\nbe modified later based on user feedback.\n\nLet\u0027s disable the commandBox.\n\nDisabling the commandBox prevents new commands from being executed. As\nthe handleExit behaviour is running concurrently with the application\u0027s\ncommand execution, a command\u0027s behaviour might be interrupted before it\ncompletes all its steps. For example, after exiting, the user deletes a\nperson record, but the application closes before the deletion is saved\nby the storage module.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":15}}}]},{"date":"2024-10-09","commitResults":[{"hash":"d745804783d439fb66580c763caf9b9e24dddbe3","isMergeCommit":false,"messageTitle":"Fix potential concurrency bug","messageBody":"The commandBox is disabled in the concurrent thread. This allows some\ntime after an exit command when another command could be runned\nillegally.\n\nLet\u0027s move the disabling of commandBox out of the concurrent thread into\nthe main thread.\n\nDisabling the commandBox in the main thread ensures that the commandBox\nis disabled before the current command finish processing, in turn\ndisabled before another command can start processing.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ba97d26d8487ee6850c39bf62c7994968f60332a","isMergeCommit":true,"messageTitle":"Merge pull request #52 from k-hian/branch-Exit","messageBody":"Exit command: display exit message","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"c3b18f09b25d6cc35264253127be1b2f598a04b4","isMergeCommit":false,"messageTitle":"Fix exit acknowledgement not showing","messageBody":"Exit acknowledgement does not show when Exit button in menu is used.\n\nLet\u0027s set the resultDisplay to always show Exit acknowledgement upon\nhandleExit.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}}]},{"date":"2024-10-14","commitResults":[{"hash":"7a2d36f85e35ceb1cf83f9da422681d6d1669c29","isMergeCommit":true,"messageTitle":"Merge pull request #64 from k-hian/branch-Exit","messageBody":"Fix exit acknowledgement not showing","fileTypesAndContributionMap":{}}]}],"PrishaVP":[{"date":"2024-10-02","commitResults":[{"hash":"805019e98dca99be2ea67e8787ad819799284328","isMergeCommit":false,"messageTitle":"Update Prisha\u0027s info in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"4e481f38e4a24ff596caeb486e3bd88e391ea283","isMergeCommit":false,"messageTitle":"Update Prisha\u0027s info in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"b38e509379d43d5c62954f9acf80583e7c4dc2ad","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":7}}},{"hash":"86e9aea29c288c461834ec018ebd9c4d151660b6","isMergeCommit":false,"messageTitle":"Undo changes to README.md as forgot to PR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":17}}},{"hash":"6180d4dcbed232339f3c5e4d9b0ca0ff9796eeb8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":11}}},{"hash":"60ceac61ae8724e6c4ee5505935bb40780aa0c70","isMergeCommit":true,"messageTitle":"Merge pull request #25 from PrishaVP/add-prisha-photo","messageBody":"Add Prisha\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"384c01b0bdc09d4be861561647241040eb7d2d9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"171f46e99e8a2b4c6d130d6b780373635c41fc32","isMergeCommit":true,"messageTitle":"Merge pull request #28 from PrishaVP/update-ReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"c9362eab7118d4d54171a371061550aebbd91be1","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0a985dc0ddb38cdd78094630f5ef846ae155e4db","isMergeCommit":true,"messageTitle":"Merge pull request #27 from PrishaVP/update-about-us-page-prisha","messageBody":"Update AboutUs page - Prisha","fileTypesAndContributionMap":{}},{"hash":"34a4c02d88ef1e42ed8712cdf4a49c3bbacba142","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"d74e96f7c13b16231295074a1eae858f088286c0","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"5caba2d410d8a7a1b1b60885a9910fd46ea90a23","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"357df48733a2e2f5ef52a12ed26511130e7681cd","isMergeCommit":true,"messageTitle":"Merge pull request #32 from PrishaVP/update-ReadMe","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"275abf94a1944b410f990090cfc693af634a9168","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8c0324407ae44387f772965f5b4c51fad5def052","isMergeCommit":true,"messageTitle":"Merge pull request #34 from PrishaVP/add-prisha-photo","messageBody":"Rename photo","fileTypesAndContributionMap":{}},{"hash":"78dbbaf1b355f3f6bd3593282e245e0267cada77","isMergeCommit":true,"messageTitle":"Merge pull request #35 from PrishaVP/update-about-us-page-prisha","messageBody":"Rename photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"914952b2b66ab83bdbd56a450365db551e90f4ee","isMergeCommit":false,"messageTitle":"Remove full stop","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"e19ee906a5fa72d816f1daf3ec811be07ff92106","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103T-F08-2/master","messageBody":"Get v1.1 version","fileTypesAndContributionMap":{}},{"hash":"858f593d446907074bc4096b9b49a7941951d796","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":334,"deletions":334},"test-code":{"insertions":3,"deletions":5014}}},{"hash":"026b0ce872eaeb4d61d77ef50b174dfd025b9f0b","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit 858f593d446907074bc4096b9b49a7941951d796.\n","fileTypesAndContributionMap":{"other":{"insertions":334,"deletions":334},"test-code":{"insertions":5014,"deletions":3}}},{"hash":"ec26f21f47947494dba715d2ac0626959bb82320","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":411,"deletions":401},"docs":{"insertions":28,"deletions":28},"test-code":{"insertions":293,"deletions":212}}},{"hash":"fe6fd11051f92b2295dec143b6d07e6a5fe69f5f","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit ec26f21f47947494dba715d2ac0626959bb82320.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":401,"deletions":411},"docs":{"insertions":28,"deletions":28},"test-code":{"insertions":212,"deletions":293}}},{"hash":"e806af750ce1e7739b824f51e0cf995658e850a9","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":45},"other":{"insertions":973,"deletions":973},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":37,"deletions":37}}},{"hash":"49885d04331f0f36e9a6f80aedb0d8f807b02df9","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit e806af750ce1e7739b824f51e0cf995658e850a9.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":46},"other":{"insertions":973,"deletions":973},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":37,"deletions":37}}},{"hash":"1c1ab343fb69e73e9d425ba2328a799bbc7fc930","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":958,"deletions":921},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":510,"deletions":552}}},{"hash":"f4498605782d1c5863052140f8c126f7cb6a9f79","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit 1c1ab343fb69e73e9d425ba2328a799bbc7fc930.\n","fileTypesAndContributionMap":{"other":{"insertions":921,"deletions":958},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":552,"deletions":510}}},{"hash":"ae6f928a02270e27a94a873f82f36ac6e0712cef","isMergeCommit":false,"messageTitle":"Rename app in UI and edit some JavaDocs to explain address book term","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-07","commitResults":[{"hash":"31f97628bec7f24bbb1758fbe8bc857359e7a2ae","isMergeCommit":false,"messageTitle":"Update list feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"26dda234f7bb6f593a36a3bea8dec4428a042983","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/LogicManagerTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"2bc388d8533a832bc01efe1f816be045544a3c9b","isMergeCommit":true,"messageTitle":"Merge pull request #51 from PrishaVP/mvp-list-feature","messageBody":"MVP - Update list feature","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"9d8d32bff434a1f171179c51c1371cb3f320bff1","isMergeCommit":false,"messageTitle":"Update save error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":2}}},{"hash":"329adfa787ed552eb052bc6acd0e9b931b2e7715","isMergeCommit":true,"messageTitle":"Merge pull request #66 from PrishaVP/MVP-Save-feature-(save)","messageBody":"Update save error messages","fileTypesAndContributionMap":{}}]}],"wujiaweijoanna":[{"date":"2024-09-30","commitResults":[{"hash":"877fc9675dc96d8d98b5bbbed506634b4a7acb8c","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"05e7e5c94faf573527de3cc23c0721d14d3cf450","isMergeCommit":true,"messageTitle":"Merge pull request #17 from wujiaweijoanna/update-aboutUs","messageBody":"Update AboutUs page - Jiawei","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"f8d07cccb72cc3c37b4c3b8cc55f725778ed2b27","isMergeCommit":false,"messageTitle":"Update set-wide settings","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"be2791d8d027a6d4e113faca1f345320cc8a6c81","isMergeCommit":true,"messageTitle":"Merge pull request #38 from wujiaweijoanna/set-wide-settings","messageBody":"Update set-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"b652a7b35c7817a6cba4e51a8972a68185a95912","isMergeCommit":true,"messageTitle":"Merge pull request #48 from PrishaVP/mvp-rename-package","messageBody":"Mvp rename app UI","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"67d4c431684fbc4442daeeadef00b3c2116399c2","isMergeCommit":false,"messageTitle":"Add gender, age, detail","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":23},"test-code":{"insertions":63,"deletions":11}}},{"hash":"c2747dbb27a29decc415270eeeb194041158a09f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mvp-add-feature","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Age.java\n#\tsrc/main/java/seedu/address/model/person/Gender.java\n","fileTypesAndContributionMap":{}},{"hash":"bdbaa6675d0711267926233aa784867cf75969dd","isMergeCommit":false,"messageTitle":"Adjust style and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":11},"test-code":{"insertions":154,"deletions":87}}}]},{"date":"2024-10-09","commitResults":[{"hash":"f6980fcf8d1b163f1d567f409aee986fb2879cdb","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wujiaweijoanna/mvp-add-feature","messageBody":"MVP - Add command overhaul","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"af3ce197fa9101bff9f8a0ff1f0447dced1aaf18","isMergeCommit":false,"messageTitle":"Make detail field optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":83,"deletions":43}}},{"hash":"1e80b02985e3f7def4f2460e5a5bc99e984a4ccd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mvp-add-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"63689450d51d049e80fae607c7bfa4b6de7874c9","isMergeCommit":false,"messageTitle":"Remove redundant code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"275d8afb38df05084738a5523051610a644e136b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from wujiaweijoanna/mvp-add-feature","messageBody":"Add Feature Follow Up","fileTypesAndContributionMap":{}}]}],"wkxcass":[{"date":"2024-09-30","commitResults":[{"hash":"94315a314214d0d7a993ff42fa929cea91fcda72","isMergeCommit":false,"messageTitle":"Update the AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"7c7067ebd3433ecc4d8989781396cea8e0e467dd","isMergeCommit":false,"messageTitle":"Update the AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"e82d9fc6fec88d60269bcf5c3324b733afdaab86","isMergeCommit":true,"messageTitle":"Merge pull request #14 from wkxcass/branch-AboutUs","messageBody":"Update AboutUs page - Cassandra","fileTypesAndContributionMap":{}},{"hash":"426718ea19a0b9ebe79b400b53230cc33752cb23","isMergeCommit":false,"messageTitle":"Developer guide: update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":4}}},{"hash":"e832d4d433b1c70318b8709e0b59230e08a65839","isMergeCommit":false,"messageTitle":"Developer guide: update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-10-03","commitResults":[{"hash":"e665cc021a5342db9289c6b3d8cf0d42832f7ac7","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wkxcass/branch-DG-NFRs","messageBody":"Developer guide: update non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"1215b7e481be2c414a3e4d797cf76e8427c9b8c5","isMergeCommit":false,"messageTitle":"Update docs/DeveloperGuide.md","messageBody":"Co-authored-by: PrishaVP \u003c127843050+PrishaVP@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4af83e2b5e0a2fe9c566f215058a6b8f078e3461","isMergeCommit":false,"messageTitle":"Update docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c206292409ab05f660794f4a7aabbc00b6af73f6","isMergeCommit":false,"messageTitle":"Update docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-09","commitResults":[{"hash":"d79a3159fca059218fa10d54f5bf93a3dd32b32d","isMergeCommit":false,"messageTitle":"Update delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"59e75228182b2896e8ec0d1525523ce346156081","isMergeCommit":false,"messageTitle":"Update related error message formats","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"7e803e3509f8e2cc01a129bf8d58e51c90148b98","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Delete","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb933b38d5dda09767bfe380ce90684c0a7316c3","isMergeCommit":false,"messageTitle":"Refine delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e5017a6003511ff8abfdaf43315d07d9bf232aeb","isMergeCommit":false,"messageTitle":"Remove unused Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":373},"test-code":{"insertions":155,"deletions":477}}},{"hash":"ec48cfda0b255d1a7c7933a68a79ec78af4e426b","isMergeCommit":false,"messageTitle":"Refine delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3401a485c0d15036c607222658b729334568d0af","isMergeCommit":false,"messageTitle":"Refine message formatting for add feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3a5e079ec1f4589684be6b9b8adc47909d60bcb8","isMergeCommit":true,"messageTitle":"Merge pull request #54 from wkxcass/branch-Delete","messageBody":"Update delete feature","fileTypesAndContributionMap":{}},{"hash":"55f3effe86f8754f72dc21cf8d7c0426049ea215","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F08-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54de6c376ad46348dc9b7a7fe6a772c076b2a716","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-RemoveFields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6fa5a4b02d86ef0c36cc9d45331378bf9fa20cc2","isMergeCommit":false,"messageTitle":"AddCommandParserTest: refine testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0689817282c31e4f1da89a58d0ff86518f7b545b","isMergeCommit":true,"messageTitle":"Merge pull request #57 from wkxcass/branch-RemoveFields","messageBody":"MVP - Remove fields","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"aa25e68cfc0a5c4e678b2a469ec5573892e192e1","isMergeCommit":false,"messageTitle":"Update Gender.java","messageBody":"Update the gender field to accept \u0027f\u0027 and \u0027m\u0027 as valid inputs,\nwhile saving them internally as \u0027F\u0027 and \u0027M\u0027 respectively.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4}}},{"hash":"450eed8acc9612c9af371d3eefa6686de6c99873","isMergeCommit":false,"messageTitle":"Create GenderTest.java","messageBody":"Create JUnit testcases for the Gender class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"58f0d14f5ebf4fbe6796533ec4716fd0547d476d","isMergeCommit":true,"messageTitle":"Merge pull request #62 from wkxcass/branch-Gender","messageBody":"MVP - Gender field","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"c81e608fcbeffc0c01611d69e5699c001888d2aa","isMergeCommit":false,"messageTitle":"Add feature: fix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2}}},{"hash":"a2d6e02a8b13724482abd8929610274a287f144f","isMergeCommit":false,"messageTitle":"Standardize Javadoc comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"c8491cac544d2dc67e953f0677b432ee79b5841d","isMergeCommit":false,"messageTitle":"Create AgeTest.java","messageBody":"Create JUnit testcases for the Age class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":0}}}]},{"date":"2024-10-17","commitResults":[{"hash":"8803b8ed60cc17d182c53644b4a275752eff90cb","isMergeCommit":true,"messageTitle":"Merge pull request #70 from wkxcass/branch-Bug-Add","messageBody":"MVP - Fix bug (add feature)","fileTypesAndContributionMap":{}}]}],"sannie-beep":[{"date":"2024-10-02","commitResults":[{"hash":"ec2386fc6622f7ec8d0e5b55be96b7c1624d568e","isMergeCommit":false,"messageTitle":"Update Sanchita\u0027s information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1e21431019c8190e4493dabae08a3396d601efda","isMergeCommit":true,"messageTitle":"Merge pull request #30 from sannie-beep/update-photo","messageBody":"Add Sanchita\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"030b9652f8f18b1c59b55a4b97120908f75316df","isMergeCommit":true,"messageTitle":"Merge pull request #31 from sannie-beep/update-about-us","messageBody":"Update AboutUs page -Sanchita","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"68290858a06c9195084267bfa2594e1db1dd941f","isMergeCommit":false,"messageTitle":"DG: Update target user profile, value proposition, user stories, glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":11}}},{"hash":"c60c41d77190417283985517852d659170c8c23e","isMergeCommit":false,"messageTitle":"Update the DG: fix reviewed changes for user stories, glossary, formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":18}}},{"hash":"4c7c16e8da40321baaaea394e193c94c9c278bd2","isMergeCommit":true,"messageTitle":"Merge pull request #39 from sannie-beep/update-dg-requirements","messageBody":"DG: Update target user profile, value proposition, user stories, glos…","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"4916f4438fb56853e63719bb6491f7436a2ac47c","isMergeCommit":false,"messageTitle":"Update Person Model with Gender and Age classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":0},"other":{"insertions":3,"deletions":1}}},{"hash":"ad53294890b884dce03aee33d9b9cfe99b78d3fd","isMergeCommit":false,"messageTitle":"Update Person class to compare Persons by email, not name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-07","commitResults":[{"hash":"ee21df83fbd24dd35cc7d7e5462cd2d206e90f4d","isMergeCommit":false,"messageTitle":"Update duplicate person and storage tests to compare dupes by email not name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":14}}},{"hash":"151172bd8879a92b8b110938946cab373d1c6193","isMergeCommit":false,"messageTitle":"Fix gradle-wrapper.properties","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":3}}},{"hash":"1f7e43cfdbd4f94820522af44e6c9efc44a2311f","isMergeCommit":true,"messageTitle":"Merge pull request #49 from sannie-beep/branch-update-person-model","messageBody":"Branch update person model","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"3f6b999249064905eeeed754a8ebe19177bbd5eb","isMergeCommit":true,"messageTitle":"Merge pull request #67 from sannie-beep/age-field-updates","messageBody":"Update Age class to check age constraints and tests for invalid age","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"k-hian":{"docs":359,"functional-code":27,"test-code":0},"PrishaVP":{"docs":23,"functional-code":11,"test-code":3},"wujiaweijoanna":{"docs":5,"functional-code":296,"test-code":167,"other":3},"wkxcass":{"docs":70,"functional-code":93,"test-code":255},"sannie-beep":{"docs":49,"functional-code":2,"test-code":9}},"authorContributionVariance":{"k-hian":5237.3364,"PrishaVP":2.0271422E7,"wujiaweijoanna":21618.504,"wkxcass":41715.387,"sannie-beep":951.1327},"authorDisplayNameMap":{"k-hian":"CS2103T-F08-2 NG K..HIAN","PrishaVP":"CS2103T-F08-2 PRIS..KASH","wujiaweijoanna":"CS2103T-F08-2 WU J..AWEI","wkxcass":"CS2103T-F08-2 WONG.. XIN","sannie-beep":"CS2103T-F08-2 DHAR..HWIN"}} +{"authorDailyContributionsMap":{"k-hian":[{"date":"2024-09-20","commitResults":[{"hash":"c21420d924d9d419f9cece8286f7c978d3540c7c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"d0194caa1d5e0ce05872caf7315a0da817c86102","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Update AboutUs.md with Kay Hian\u0027s info\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"693037bca5d8825ebed9576eb493640ed6ff0767","isMergeCommit":false,"messageTitle":"Fix AboutUs.md format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd1a4261604399276c93b8ea1b193d437f669234","isMergeCommit":true,"messageTitle":"Resolve conflicts for branch-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3353e1a3103d5c1f8c6841dbe056b88bcca6e74a","isMergeCommit":true,"messageTitle":"Merge pull request #16 from k-hian/branch-AboutUs","messageBody":"Update AboutUs page - Kay Hian","fileTypesAndContributionMap":{}},{"hash":"0ac3069159075510abebdb69a58b4672c707d7ca","isMergeCommit":false,"messageTitle":"Update DG use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":357,"deletions":7}}}]},{"date":"2024-10-04","commitResults":[{"hash":"a39d90bcd30744faf88f5c6243dbf204185bc912","isMergeCommit":false,"messageTitle":"Fix bugs in DG","messageBody":"Some step 1(s) in UCs are conflicting with the stated preconditions.\n\nThe respective step 1(s) are removed.\n\nMinor fixes to standardise language and grammatical errors.\n","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":70}}},{"hash":"ed1815314884b964cf0f68492e16c6594f054551","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UseCases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c8e616127a0c663fd9a44334ee121fb45f814394","isMergeCommit":false,"messageTitle":"Standardise language for DG use cases","messageBody":"Previous fix missed a few necessary standardisations made here.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ad72befb3552a2bb2abd7403b0a36e82caebc19d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from k-hian/branch-UseCases","messageBody":"DG: update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"17a5d3fd4d5a0aeb42b0b6479a4125cdc53927cb","isMergeCommit":false,"messageTitle":"Exit command: display exit message","messageBody":"The feedbackToUser is passed to the resultDisplay UI, but the\napplication closes too quickly for the feedback to be rendered to the\nuser.\n\nLet\u0027s add a 3 second delay upon exit.\n\nRunning the delay (and handleExit behaviour) on a separate concurrent\nthread allows the feedbackToUser to be rendered by FXML.\n\nThe duration of the delay (3 seconds) is arbitrarily selected, and can\nbe modified later based on user feedback.\n\nLet\u0027s disable the commandBox.\n\nDisabling the commandBox prevents new commands from being executed. As\nthe handleExit behaviour is running concurrently with the application\u0027s\ncommand execution, a command\u0027s behaviour might be interrupted before it\ncompletes all its steps. For example, after exiting, the user deletes a\nperson record, but the application closes before the deletion is saved\nby the storage module.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":15}}}]},{"date":"2024-10-09","commitResults":[{"hash":"d745804783d439fb66580c763caf9b9e24dddbe3","isMergeCommit":false,"messageTitle":"Fix potential concurrency bug","messageBody":"The commandBox is disabled in the concurrent thread. This allows some\ntime after an exit command when another command could be runned\nillegally.\n\nLet\u0027s move the disabling of commandBox out of the concurrent thread into\nthe main thread.\n\nDisabling the commandBox in the main thread ensures that the commandBox\nis disabled before the current command finish processing, in turn\ndisabled before another command can start processing.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ba97d26d8487ee6850c39bf62c7994968f60332a","isMergeCommit":true,"messageTitle":"Merge pull request #52 from k-hian/branch-Exit","messageBody":"Exit command: display exit message","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"c3b18f09b25d6cc35264253127be1b2f598a04b4","isMergeCommit":false,"messageTitle":"Fix exit acknowledgement not showing","messageBody":"Exit acknowledgement does not show when Exit button in menu is used.\n\nLet\u0027s set the resultDisplay to always show Exit acknowledgement upon\nhandleExit.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}}]},{"date":"2024-10-14","commitResults":[{"hash":"7a2d36f85e35ceb1cf83f9da422681d6d1669c29","isMergeCommit":true,"messageTitle":"Merge pull request #64 from k-hian/branch-Exit","messageBody":"Fix exit acknowledgement not showing","fileTypesAndContributionMap":{}}]}],"PrishaVP":[{"date":"2024-10-02","commitResults":[{"hash":"805019e98dca99be2ea67e8787ad819799284328","isMergeCommit":false,"messageTitle":"Update Prisha\u0027s info in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"4e481f38e4a24ff596caeb486e3bd88e391ea283","isMergeCommit":false,"messageTitle":"Update Prisha\u0027s info in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"b38e509379d43d5c62954f9acf80583e7c4dc2ad","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":7}}},{"hash":"86e9aea29c288c461834ec018ebd9c4d151660b6","isMergeCommit":false,"messageTitle":"Undo changes to README.md as forgot to PR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":17}}},{"hash":"6180d4dcbed232339f3c5e4d9b0ca0ff9796eeb8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":11}}},{"hash":"60ceac61ae8724e6c4ee5505935bb40780aa0c70","isMergeCommit":true,"messageTitle":"Merge pull request #25 from PrishaVP/add-prisha-photo","messageBody":"Add Prisha\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"384c01b0bdc09d4be861561647241040eb7d2d9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"171f46e99e8a2b4c6d130d6b780373635c41fc32","isMergeCommit":true,"messageTitle":"Merge pull request #28 from PrishaVP/update-ReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"c9362eab7118d4d54171a371061550aebbd91be1","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0a985dc0ddb38cdd78094630f5ef846ae155e4db","isMergeCommit":true,"messageTitle":"Merge pull request #27 from PrishaVP/update-about-us-page-prisha","messageBody":"Update AboutUs page - Prisha","fileTypesAndContributionMap":{}},{"hash":"34a4c02d88ef1e42ed8712cdf4a49c3bbacba142","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"d74e96f7c13b16231295074a1eae858f088286c0","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"5caba2d410d8a7a1b1b60885a9910fd46ea90a23","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"357df48733a2e2f5ef52a12ed26511130e7681cd","isMergeCommit":true,"messageTitle":"Merge pull request #32 from PrishaVP/update-ReadMe","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"275abf94a1944b410f990090cfc693af634a9168","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8c0324407ae44387f772965f5b4c51fad5def052","isMergeCommit":true,"messageTitle":"Merge pull request #34 from PrishaVP/add-prisha-photo","messageBody":"Rename photo","fileTypesAndContributionMap":{}},{"hash":"78dbbaf1b355f3f6bd3593282e245e0267cada77","isMergeCommit":true,"messageTitle":"Merge pull request #35 from PrishaVP/update-about-us-page-prisha","messageBody":"Rename photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"914952b2b66ab83bdbd56a450365db551e90f4ee","isMergeCommit":false,"messageTitle":"Remove full stop","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"e19ee906a5fa72d816f1daf3ec811be07ff92106","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103T-F08-2/master","messageBody":"Get v1.1 version","fileTypesAndContributionMap":{}},{"hash":"858f593d446907074bc4096b9b49a7941951d796","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":334,"deletions":334},"test-code":{"insertions":3,"deletions":5014}}},{"hash":"026b0ce872eaeb4d61d77ef50b174dfd025b9f0b","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit 858f593d446907074bc4096b9b49a7941951d796.\n","fileTypesAndContributionMap":{"other":{"insertions":334,"deletions":334},"test-code":{"insertions":5014,"deletions":3}}},{"hash":"ec26f21f47947494dba715d2ac0626959bb82320","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":411,"deletions":401},"docs":{"insertions":28,"deletions":28},"test-code":{"insertions":293,"deletions":212}}},{"hash":"fe6fd11051f92b2295dec143b6d07e6a5fe69f5f","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit ec26f21f47947494dba715d2ac0626959bb82320.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":401,"deletions":411},"docs":{"insertions":28,"deletions":28},"test-code":{"insertions":212,"deletions":293}}},{"hash":"e806af750ce1e7739b824f51e0cf995658e850a9","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":45},"other":{"insertions":973,"deletions":973},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":37,"deletions":37}}},{"hash":"49885d04331f0f36e9a6f80aedb0d8f807b02df9","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit e806af750ce1e7739b824f51e0cf995658e850a9.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":46},"other":{"insertions":973,"deletions":973},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":37,"deletions":37}}},{"hash":"1c1ab343fb69e73e9d425ba2328a799bbc7fc930","isMergeCommit":false,"messageTitle":"Rename package","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":958,"deletions":921},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":510,"deletions":552}}},{"hash":"f4498605782d1c5863052140f8c126f7cb6a9f79","isMergeCommit":false,"messageTitle":"Revert \"Rename package\"","messageBody":"This reverts commit 1c1ab343fb69e73e9d425ba2328a799bbc7fc930.\n","fileTypesAndContributionMap":{"other":{"insertions":921,"deletions":958},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":552,"deletions":510}}},{"hash":"ae6f928a02270e27a94a873f82f36ac6e0712cef","isMergeCommit":false,"messageTitle":"Rename app in UI and edit some JavaDocs to explain address book term","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-07","commitResults":[{"hash":"31f97628bec7f24bbb1758fbe8bc857359e7a2ae","isMergeCommit":false,"messageTitle":"Update list feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"26dda234f7bb6f593a36a3bea8dec4428a042983","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/LogicManagerTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"2bc388d8533a832bc01efe1f816be045544a3c9b","isMergeCommit":true,"messageTitle":"Merge pull request #51 from PrishaVP/mvp-list-feature","messageBody":"MVP - Update list feature","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"9d8d32bff434a1f171179c51c1371cb3f320bff1","isMergeCommit":false,"messageTitle":"Update save error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":2}}},{"hash":"329adfa787ed552eb052bc6acd0e9b931b2e7715","isMergeCommit":true,"messageTitle":"Merge pull request #66 from PrishaVP/MVP-Save-feature-(save)","messageBody":"Update save error messages","fileTypesAndContributionMap":{}}]}],"wujiaweijoanna":[{"date":"2024-09-30","commitResults":[{"hash":"877fc9675dc96d8d98b5bbbed506634b4a7acb8c","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"05e7e5c94faf573527de3cc23c0721d14d3cf450","isMergeCommit":true,"messageTitle":"Merge pull request #17 from wujiaweijoanna/update-aboutUs","messageBody":"Update AboutUs page - Jiawei","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"f8d07cccb72cc3c37b4c3b8cc55f725778ed2b27","isMergeCommit":false,"messageTitle":"Update set-wide settings","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"be2791d8d027a6d4e113faca1f345320cc8a6c81","isMergeCommit":true,"messageTitle":"Merge pull request #38 from wujiaweijoanna/set-wide-settings","messageBody":"Update set-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"b652a7b35c7817a6cba4e51a8972a68185a95912","isMergeCommit":true,"messageTitle":"Merge pull request #48 from PrishaVP/mvp-rename-package","messageBody":"Mvp rename app UI","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"67d4c431684fbc4442daeeadef00b3c2116399c2","isMergeCommit":false,"messageTitle":"Add gender, age, detail","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":23},"test-code":{"insertions":63,"deletions":11}}},{"hash":"c2747dbb27a29decc415270eeeb194041158a09f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mvp-add-feature","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Age.java\n#\tsrc/main/java/seedu/address/model/person/Gender.java\n","fileTypesAndContributionMap":{}},{"hash":"bdbaa6675d0711267926233aa784867cf75969dd","isMergeCommit":false,"messageTitle":"Adjust style and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":11},"test-code":{"insertions":154,"deletions":87}}}]},{"date":"2024-10-09","commitResults":[{"hash":"f6980fcf8d1b163f1d567f409aee986fb2879cdb","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wujiaweijoanna/mvp-add-feature","messageBody":"MVP - Add command overhaul","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"af3ce197fa9101bff9f8a0ff1f0447dced1aaf18","isMergeCommit":false,"messageTitle":"Make detail field optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":83,"deletions":43}}},{"hash":"1e80b02985e3f7def4f2460e5a5bc99e984a4ccd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mvp-add-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"63689450d51d049e80fae607c7bfa4b6de7874c9","isMergeCommit":false,"messageTitle":"Remove redundant code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"275d8afb38df05084738a5523051610a644e136b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from wujiaweijoanna/mvp-add-feature","messageBody":"Add Feature Follow Up","fileTypesAndContributionMap":{}}]}],"wkxcass":[{"date":"2024-09-30","commitResults":[{"hash":"94315a314214d0d7a993ff42fa929cea91fcda72","isMergeCommit":false,"messageTitle":"Update the AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"7c7067ebd3433ecc4d8989781396cea8e0e467dd","isMergeCommit":false,"messageTitle":"Update the AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"e82d9fc6fec88d60269bcf5c3324b733afdaab86","isMergeCommit":true,"messageTitle":"Merge pull request #14 from wkxcass/branch-AboutUs","messageBody":"Update AboutUs page - Cassandra","fileTypesAndContributionMap":{}},{"hash":"426718ea19a0b9ebe79b400b53230cc33752cb23","isMergeCommit":false,"messageTitle":"Developer guide: update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":4}}},{"hash":"e832d4d433b1c70318b8709e0b59230e08a65839","isMergeCommit":false,"messageTitle":"Developer guide: update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-10-03","commitResults":[{"hash":"e665cc021a5342db9289c6b3d8cf0d42832f7ac7","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wkxcass/branch-DG-NFRs","messageBody":"Developer guide: update non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"1215b7e481be2c414a3e4d797cf76e8427c9b8c5","isMergeCommit":false,"messageTitle":"Update docs/DeveloperGuide.md","messageBody":"Co-authored-by: PrishaVP \u003c127843050+PrishaVP@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4af83e2b5e0a2fe9c566f215058a6b8f078e3461","isMergeCommit":false,"messageTitle":"Update docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c206292409ab05f660794f4a7aabbc00b6af73f6","isMergeCommit":false,"messageTitle":"Update docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-09","commitResults":[{"hash":"d79a3159fca059218fa10d54f5bf93a3dd32b32d","isMergeCommit":false,"messageTitle":"Update delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"59e75228182b2896e8ec0d1525523ce346156081","isMergeCommit":false,"messageTitle":"Update related error message formats","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"7e803e3509f8e2cc01a129bf8d58e51c90148b98","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Delete","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb933b38d5dda09767bfe380ce90684c0a7316c3","isMergeCommit":false,"messageTitle":"Refine delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e5017a6003511ff8abfdaf43315d07d9bf232aeb","isMergeCommit":false,"messageTitle":"Remove unused Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":373},"test-code":{"insertions":155,"deletions":477}}},{"hash":"ec48cfda0b255d1a7c7933a68a79ec78af4e426b","isMergeCommit":false,"messageTitle":"Refine delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3401a485c0d15036c607222658b729334568d0af","isMergeCommit":false,"messageTitle":"Refine message formatting for add feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3a5e079ec1f4589684be6b9b8adc47909d60bcb8","isMergeCommit":true,"messageTitle":"Merge pull request #54 from wkxcass/branch-Delete","messageBody":"Update delete feature","fileTypesAndContributionMap":{}},{"hash":"55f3effe86f8754f72dc21cf8d7c0426049ea215","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F08-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54de6c376ad46348dc9b7a7fe6a772c076b2a716","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-RemoveFields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6fa5a4b02d86ef0c36cc9d45331378bf9fa20cc2","isMergeCommit":false,"messageTitle":"AddCommandParserTest: refine testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0689817282c31e4f1da89a58d0ff86518f7b545b","isMergeCommit":true,"messageTitle":"Merge pull request #57 from wkxcass/branch-RemoveFields","messageBody":"MVP - Remove fields","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"aa25e68cfc0a5c4e678b2a469ec5573892e192e1","isMergeCommit":false,"messageTitle":"Update Gender.java","messageBody":"Update the gender field to accept \u0027f\u0027 and \u0027m\u0027 as valid inputs,\nwhile saving them internally as \u0027F\u0027 and \u0027M\u0027 respectively.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4}}},{"hash":"450eed8acc9612c9af371d3eefa6686de6c99873","isMergeCommit":false,"messageTitle":"Create GenderTest.java","messageBody":"Create JUnit testcases for the Gender class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"58f0d14f5ebf4fbe6796533ec4716fd0547d476d","isMergeCommit":true,"messageTitle":"Merge pull request #62 from wkxcass/branch-Gender","messageBody":"MVP - Gender field","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"c81e608fcbeffc0c01611d69e5699c001888d2aa","isMergeCommit":false,"messageTitle":"Add feature: fix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2}}},{"hash":"a2d6e02a8b13724482abd8929610274a287f144f","isMergeCommit":false,"messageTitle":"Standardize Javadoc comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"c8491cac544d2dc67e953f0677b432ee79b5841d","isMergeCommit":false,"messageTitle":"Create AgeTest.java","messageBody":"Create JUnit testcases for the Age class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":0}}}]},{"date":"2024-10-17","commitResults":[{"hash":"8803b8ed60cc17d182c53644b4a275752eff90cb","isMergeCommit":true,"messageTitle":"Merge pull request #70 from wkxcass/branch-Bug-Add","messageBody":"MVP - Fix bug (add feature)","fileTypesAndContributionMap":{}}]}],"sannie-beep":[{"date":"2024-10-02","commitResults":[{"hash":"ec2386fc6622f7ec8d0e5b55be96b7c1624d568e","isMergeCommit":false,"messageTitle":"Update Sanchita\u0027s information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1e21431019c8190e4493dabae08a3396d601efda","isMergeCommit":true,"messageTitle":"Merge pull request #30 from sannie-beep/update-photo","messageBody":"Add Sanchita\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"030b9652f8f18b1c59b55a4b97120908f75316df","isMergeCommit":true,"messageTitle":"Merge pull request #31 from sannie-beep/update-about-us","messageBody":"Update AboutUs page -Sanchita","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"68290858a06c9195084267bfa2594e1db1dd941f","isMergeCommit":false,"messageTitle":"DG: Update target user profile, value proposition, user stories, glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":11}}},{"hash":"c60c41d77190417283985517852d659170c8c23e","isMergeCommit":false,"messageTitle":"Update the DG: fix reviewed changes for user stories, glossary, formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":18}}},{"hash":"4c7c16e8da40321baaaea394e193c94c9c278bd2","isMergeCommit":true,"messageTitle":"Merge pull request #39 from sannie-beep/update-dg-requirements","messageBody":"DG: Update target user profile, value proposition, user stories, glos…","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"4916f4438fb56853e63719bb6491f7436a2ac47c","isMergeCommit":false,"messageTitle":"Update Person Model with Gender and Age classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":0},"other":{"insertions":3,"deletions":1}}},{"hash":"ad53294890b884dce03aee33d9b9cfe99b78d3fd","isMergeCommit":false,"messageTitle":"Update Person class to compare Persons by email, not name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-07","commitResults":[{"hash":"ee21df83fbd24dd35cc7d7e5462cd2d206e90f4d","isMergeCommit":false,"messageTitle":"Update duplicate person and storage tests to compare dupes by email not name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":14}}},{"hash":"151172bd8879a92b8b110938946cab373d1c6193","isMergeCommit":false,"messageTitle":"Fix gradle-wrapper.properties","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":3}}},{"hash":"1f7e43cfdbd4f94820522af44e6c9efc44a2311f","isMergeCommit":true,"messageTitle":"Merge pull request #49 from sannie-beep/branch-update-person-model","messageBody":"Branch update person model","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"df70bc84a97797c20e2919f236ec02321c79cae4","isMergeCommit":false,"messageTitle":"Update Age class to check age constraints and tests for invalid age over limit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":21},"test-code":{"insertions":9,"deletions":0}}},{"hash":"3abf425f690774935afc50d0474597d32168297d","isMergeCommit":false,"messageTitle":"Fix minor formatting and spacing issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"3f6b999249064905eeeed754a8ebe19177bbd5eb","isMergeCommit":true,"messageTitle":"Merge pull request #67 from sannie-beep/age-field-updates","messageBody":"Update Age class to check age constraints and tests for invalid age","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"k-hian":{"docs":359,"functional-code":27,"test-code":0},"PrishaVP":{"docs":23,"functional-code":11,"test-code":3},"wujiaweijoanna":{"docs":5,"functional-code":296,"test-code":167,"other":3},"wkxcass":{"docs":70,"functional-code":93,"test-code":255},"sannie-beep":{"docs":49,"functional-code":17,"test-code":18}},"authorContributionVariance":{"k-hian":5237.3364,"PrishaVP":2.0271422E7,"wujiaweijoanna":21618.504,"wkxcass":41715.387,"sannie-beep":1005.31995},"authorDisplayNameMap":{"k-hian":"CS2103T-F08-2 NG K..HIAN","PrishaVP":"CS2103T-F08-2 PRIS..KASH","wujiaweijoanna":"CS2103T-F08-2 WU J..AWEI","wkxcass":"CS2103T-F08-2 WONG.. XIN","sannie-beep":"CS2103T-F08-2 DHAR..HWIN"}} diff --git a/AY2425S1-CS2103T-F10-3_tp_master/authorship.json b/AY2425S1-CS2103T-F10-3_tp_master/authorship.json index bb21d2f3..d47e2872 100644 --- a/AY2425S1-CS2103T-F10-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F10-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F10-3/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp/graph/badge.svg?token\u003dY7MHE94H5W)](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"* This is **a project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"* It is targeted for real estate agents to organise and manage their properties and clients.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":" * Real Estate Agents can organize and categorize client and seller contacts, schedule appointments, contact clients about new property listings that match their client\u0027s preferences, and be notified to contact clients on key dates or at regular intervals.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base of around 6 KLoC.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"* It is named `NUStates` and is adapted from the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":"* For the detailed documentation of this project, see the **[NUStates Product Website](https://ay2425s1-cs2103t-f10-3.github.io/tp/)**.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false}],"authorContributionMap":{"xqtann":9,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"[//]: # (You can reach us at the email `seer[at]comp.nus.edu.sg`)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"[[About Us](https://ay2425s1-cs2103t-f10-3.github.io/tp/)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"## NUStates","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":"### Trisha Patodia","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"\u003cimg src\u003d\"images/triishaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"[[github](http://github.com/triishaa)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"[[portfolio](team/triishaa.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":"* Role: Documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"### Low Wei Bin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"\u003cimg src\u003d\"images/orangecatloves.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":"[[github](http://github.com/orangecatloves)] [[portfolio](team/orangecatloves.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"* Role: Code-Quality","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":"* Responsibilities: Ensures that coding quality is adhered and up to standard for every pull-request","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Potatoad88"},"content":"### Dylan Wong","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":"\u003cimg src\u003d\"images/potatoad88.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":"[[github](https://github.com/Potatoad88)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":"[[portfolio](team/dylan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":"* Role: Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":"* Responsibilities: Ensure testing is done properly and on time","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":"### Tan Xin Quan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":"\u003cimg src\u003d\"images/xqtann.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":"[[github](http://github.com/xqtann)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":"[[portfolio](team/xinquan.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xqtann"},"content":"* Role: Integration Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xqtann"},"content":"* Responsibilities: Ensure proper version control and every PR is reviewed thoroughly","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ITZXITZX"},"content":"### Isaac Teo","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ITZXITZX"},"content":"\u003cimg src\u003d\"images/itzxitzx.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ITZXITZX"},"content":"[[github](https://github.com/itzxitzx)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ITZXITZX"},"content":"[[portfolio](team/isaac.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ITZXITZX"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":"* Responsibilities: Responsible for overall project coordination.","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"xqtann":16,"OrangeCatLoves":5,"Potatoad88":6,"triishaa":1,"ITZXITZX":5,"-":36}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"# NUStates Developer Guide","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ITZXITZX"},"content":"[//]: # (_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ITZXITZX"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"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","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"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","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"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","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"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","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"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","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"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","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"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","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"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","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"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","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Potatoad88"},"content":"**Target user profile**: Real Estate Agents","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Potatoad88"},"content":"**Value proposition**: organize and categorize client and seller contacts, schedule appointments, contact clients about new property listings that match their client\u0027s preferences, and be notified to contact clients on key dates or at regular intervals.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Potatoad88"},"content":"|----------|--------------------------------------------------------------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Busy Real Estate Agent | search for contacts fast | save time when trying to contact a person |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | be able to add contacts | contact and find details about a person |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | delete contacts of a client | remove irrelevant clients from my list |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | be able to keep track of all the properties listed | help my clients quickly find the best-suited property for them |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | search for properties under me | identify the specific property I want to find |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | view all my clients | browse and find clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | know my total list of clients who are actively searching for homes | have a full view of all of my clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | view full details of a particular client | view all saved details of the client in one place |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | easily update contact details | keep my address book up to date and accurate |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | filter contacts based on names | find contacts I am familiar with via name |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | store multiple contacts for each client | contact them via their most comfortable means |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Potatoad88"},"content":"| `*` | Forgetful Real Estate Agent | keep track of the client birthdays | send them well wishes to maintain relations |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Potatoad88"},"content":"| `*` | Forgetful Real Estate Agent | remember what my clients preferences are | contact them when a new property matching their criteria is available |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to mass delete clients | avoid having to do it individually |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Potatoad88"},"content":"| `*` | Forgetful Real Estate Agent who wish to deal with more important clients | categorize different clients/contacts under different priority | remember which contacts are more important |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | filter clients based on some specified criteria | find clients relevant to what I am looking for |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to have multiple accounts/phone numbers | separate contacts from my work life and personal life |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Potatoad88"},"content":"| `*` | Systematic Real Estate Agent | be able to tag my contacts under different labels | have quick search for people by searching for the tag |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to edit client details and contacts | save time when changing the client details without having to delete and recreate them |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | pin certain clients at the top of my list | quickly access those contacts |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | be able to undo a command | recover accidentally executed commands |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | receive validation feedback when entering client details | avoid entering invalid or incorrect details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | be able detect duplicate client contacts | avoid having multiple entries for the same client |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | hide/archive client details | hide completed transactions and past client details, keeping my contact list updated and organized |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to see a list of my most recently added client contacts | quickly find and access them |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | sort the client list | organize the client list based on my preference |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | view the history of interactions with each contact | remember past conversations and follow-up |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | filter contacts based on their preferred location or address | find contacts which are in a specific area or region quickly |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Potatoad88"},"content":"| `*` | Strategic Real Estate Agent | add custom notes to each contact profile | record specific details or preferences that they have so that I can personalize my service |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | set priority levels for different contacts | focus more attention on the more urgent/important clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | categorize contacts by their preferred language | communicate with the client with their preferred language of choice |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | tag contacts based on the type of property they are interested in | quickly match properties to the right clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | segment my contact list by geographic region | target my outreach based on specific property locations or markets |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"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","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Potatoad88"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Potatoad88"},"content":"1. User requests to add a new contact by providing the required details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook validates the provided details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook adds the new contact to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Potatoad88"},"content":"4. AddressBook shows a success message with the contact details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Potatoad88"},"content":"* 2a. The provided details are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Potatoad88"},"content":" * 2a1. AddressBook shows an error message indicating the invalid fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Potatoad88"},"content":" * 2a2. User corrects the invalid details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Potatoad88"},"content":" * 2a3. AddressBook re-validates the details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Potatoad88"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Potatoad88"},"content":"* 2b. The contact already exists in the AddressBook.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Potatoad88"},"content":" * 2b1. AddressBook shows an error message indicating the duplicate contact.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Potatoad88"},"content":"* 2c. Required fields are missing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Potatoad88"},"content":" * 2c1. AddressBook shows an error message indicating the missing fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Potatoad88"},"content":" * 2c2. User provides the missing details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Potatoad88"},"content":" * 2c3. AddressBook re-validates the details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Potatoad88"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Potatoad88"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Potatoad88"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Potatoad88"},"content":"1. User requests to delete a contact by providing the index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook validates the provided index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook deletes the contact from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Potatoad88"},"content":"4. AddressBook shows a success message with the deleted contact details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Potatoad88"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Potatoad88"},"content":"* 2a. The provided index is missing or not a positive integer.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Potatoad88"},"content":" * 2a1. AddressBook shows an error message indicating the invalid index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Potatoad88"},"content":"* 2b. The provided index is more than the number of contacts in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Potatoad88"},"content":" * 2b1. AddressBook shows an error message indicating the invalid index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Potatoad88"},"content":"**Use case: List all contacts**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Potatoad88"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"Potatoad88"},"content":"1. User requests to list all contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook lists all contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook shows a success message indicating all contacts are listed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Potatoad88"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Potatoad88"},"content":"* 1a. User provides additional arguments after the `list` command.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Potatoad88"},"content":" * 1a1. AddressBook shows an error message indicating that the `list` command takes no arguments.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Potatoad88"},"content":"**Use case: Search for a contact**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Potatoad88"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Potatoad88"},"content":"1. User requests to search for a contact by providing a keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook validates the provided keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook searches for contacts matching the keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"Potatoad88"},"content":"4. AddressBook shows a list of matching contacts with their details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"Potatoad88"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"Potatoad88"},"content":"* 2a. The provided keyword is missing or invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"Potatoad88"},"content":" * 2a1. AddressBook shows an error message indicating the invalid keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"Potatoad88"},"content":"* 3a. No contacts match the provided keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Potatoad88"},"content":" * 3a1. AddressBook shows a message indicating no contacts were found.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"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","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"OrangeCatLoves"},"content":"4. Client searches should provide results even with partial or incomplete input and return results instantly (within 1 second).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"OrangeCatLoves"},"content":"5. The system should be available 99.9% of the time to ensure real-estate agents can access it whenever they need to.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"OrangeCatLoves"},"content":"6. The system should gracefully handle failures, ensuring no data loss during system crashes or unexpected outages.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"OrangeCatLoves"},"content":"7. All code should be well-documented to ensure future developers can easily understand and modify the application.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"triishaa"},"content":"* **Contact**: An entity representing a client. It contains personal details such as name, phone number, email and address. Contact can also include preferences like seller or buyer ranges and associated properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"triishaa"},"content":"* **Property**: A real estate asset associated to a contact. Each property has details such as name, address, price, number of rooms and optional tags(property type/condition/ownership type, etc.)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"triishaa"},"content":"* **Index**: A numerical identifier used to refer to a specific contact or property in the system. These are used for operations like deletion, updating, or viewing details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"triishaa"},"content":"* **Tag**: A label used to categorize contacts or properties. Examples can include \"Investor\", \"Luxury\", \"Renter\", etc. They are used to provide additional context and for easy filtering and searching.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"triishaa"},"content":"* **Seller Preferred Range (SPR)**: A price range that indicates the seller\u0027s preferred selling range for properties. Used for matching potential sellers with buyers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"triishaa"},"content":"* **Buyer Preferred Range (BPR)**: A price range that indicates the buyer\u0027s preferred range for purchasing properties. Helps in identifying properties that match a buyer\u0027s preference.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"triishaa"},"content":"* **Keyword**: A term or phrase used to search for specific contacts or properties. They can match any stored attribute such as name, address, tag, etc.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"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","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"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","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"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","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"Potatoad88":110,"OrangeCatLoves":4,"triishaa":7,"ITZXITZX":2,"-":378}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"# NUStates User Guide","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"NUStates is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) for Real Estate Agents to organize and categorize client and seller contacts, schedule appointments, contact clients about new property listings that match their client\u0027s preferences, and be notified to contact clients on key dates or at regular intervals.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"It has the benefits of a Graphical User Interface (GUI). If you can type fast, NUStates can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"1. Download the latest `.jar` file from [here](https://github.com/nus-cs2103-AY2425S1/forum/releases).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"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","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":173,"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","isFullCredit":false},{"lineNumber":174,"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","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"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","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"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","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"xqtann":5,"-":202}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eNUStates\u003c/a\u003e","lastModifiedDate":"2024-09-19","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ITZXITZX"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F10-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"ITZXITZX":1,"-":66}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ITZXITZX"},"content":"# NUStates","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ITZXITZX"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F10-3/tp/actions)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ITZXITZX"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ITZXITZX"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp/graph/badge.svg?token\u003dY7MHE94H5W)](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"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","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"ITZXITZX":4,"-":19}},{"path":"docs/team/dylan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":" title: \"Dylan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Potatoad88":1,"-":45}},{"path":"docs/team/orangecatloves.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":" title: \"Low Wei Bin\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"* **Project management**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" * User Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"* **Community**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"* **Tools**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":46}},{"path":"docs/team/xinquan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"layout: page","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xqtann"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"* **Project management**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xqtann"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xqtann"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xqtann"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xqtann"},"content":" * User Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xqtann"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xqtann"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xqtann"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":"* **Community**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xqtann"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xqtann"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xqtann"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":"* **Tools**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xqtann"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"xqtann":46}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyToBuyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Potatoad88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BUYING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Potatoad88"},"content":"import java.util.List;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Potatoad88"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Potatoad88"},"content":" * Adds a property to the list of properties to buy for a specific contact.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Potatoad88"},"content":"public class AddPropertyToBuyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Potatoad88"},"content":" public static final String COMMAND_WORD \u003d \"addBuy\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Potatoad88"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the list of properties to buy\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Potatoad88"},"content":" + \" for this specific person. \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Potatoad88"},"content":" + \"Parameters: INDEX (Must be a positive integer)\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_HOUSING_TYPE + \"[HOUSING_TYPE]\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":" + PREFIX_BUYING_PRICE + \"[SELLING_PRICE]\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_POSTAL_CODE + \"[POSTAL_CODE]\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_UNIT_NUMBER + \"[UNIT_NUMBER]\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_TAG + \"[TAG]...\\n\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Potatoad88"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" + \"1 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":" + PREFIX_HOUSING_TYPE + \"c \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":" + PREFIX_BUYING_PRICE + \"1650000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_POSTAL_CODE + \"567510 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_UNIT_NUMBER + \"10-65 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_TAG + \"Extremely spacious \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_TAG + \"Near MRT\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Potatoad88"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"This property already exists \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":" + \"in the list of properties to buy\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" private final Index index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":" private final Property propertyToBuyToBeAdded;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":" * @param property property to be added to the list of properties to buy","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" public AddPropertyToBuyCommand(Index index, Property property) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" this.propertyToBuyToBeAdded \u003d property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Potatoad88"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Potatoad88"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Potatoad88"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Potatoad88"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Potatoad88"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Potatoad88"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Potatoad88"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Potatoad88"},"content":" personToEdit.containsBuyProperty(propertyToBuyToBeAdded);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Potatoad88"},"content":" if (personToEdit.containsBuyProperty(propertyToBuyToBeAdded)) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Potatoad88"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Potatoad88"},"content":" } else {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Potatoad88"},"content":" personToEdit.addBuyProperty(propertyToBuyToBeAdded);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Potatoad88"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Potatoad88"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Potatoad88"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Potatoad88"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Potatoad88"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Potatoad88"},"content":" || (other instanceof AddPropertyToBuyCommand // instanceof handles nulls","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Potatoad88"},"content":" \u0026\u0026 propertyToBuyToBeAdded.equals(((AddPropertyToBuyCommand) other).propertyToBuyToBeAdded));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Potatoad88"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"xqtann":5,"Potatoad88":83}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyToSellCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.List;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" * Adds a property to the list of properties to sell for a specific contact.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellCommand extends Command {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String COMMAND_WORD \u003d \"addSell\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the list of properties to sell \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" + \"for this specific person. \\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" + \"Parameters: INDEX (Must be a positive integer) \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"[HOUSING_TYPE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"[SELLING_PRICE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"[POSTAL_CODE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"[UNIT_NUMBER] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"[TAG]...\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" + \"1 \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"c \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"165000000 \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"567510 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-65 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"Extremely spacious \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"Near MRT\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED \u003d \"This command (addSell) is not implemented yet\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"This property already exists \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" + \"in the list of properties to sell\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" private final Property propertyToSellToBeAdded;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index personIndex;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" * Creates an AddPropertyToSellCommand to add the specified {@code Property}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" public AddPropertyToSellCommand(Index personIndex, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" this.personIndex \u003d personIndex;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" this.propertyToSellToBeAdded \u003d property;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" if (personIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" Person personToEdit \u003d lastShownList.get(personIndex.getZeroBased());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" if (personToEdit.containsSellProperty(propertyToSellToBeAdded)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" } else {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" personToEdit.addSellProperty(propertyToSellToBeAdded);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, propertyToSellToBeAdded));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof AddPropertyToSellCommand // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 propertyToSellToBeAdded.equals(((AddPropertyToSellCommand) other).propertyToSellToBeAdded));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":84}},{"path":"src/main/java/seedu/address/logic/commands/FindNameCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindNameCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" public static final String COMMAND_WORD \u003d \"findn\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" public FindNameCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" if (!(other instanceof FindNameCommand)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"triishaa"},"content":" FindNameCommand otherFindNameCommand \u003d (FindNameCommand) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"triishaa"},"content":" return predicate.equals(otherFindNameCommand.predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"triishaa":6,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/FindPhoneNumberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" public static final String COMMAND_WORD \u003d \"findp\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds the person whose contact matches any of \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" + \"Example: \" + COMMAND_WORD + \" 12345678 98765432\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":" private final PhoneNumberContainsKeywordPredicate predicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" public FindPhoneNumberCommand(PhoneNumberContainsKeywordPredicate predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPhoneNumberList().size()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" if (!(other instanceof FindPhoneNumberCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand otherFindPhoneNumberCommand \u003d (FindPhoneNumberCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"triishaa"},"content":" return predicate.equals(otherFindPhoneNumberCommand.predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"triishaa":12,"-":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, null, null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Potatoad88":1,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyToBuyParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BUYING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Apartment;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Bto;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Condo;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Hdb;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.HousingType;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.OtherProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xqtann"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":" * Parses input arguments and creates a new AddPropertyToBuyCommand object","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xqtann"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xqtann"},"content":"public class AddPropertyToBuyParser implements Parser\u003cAddPropertyToBuyCommand\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xqtann"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xqtann"},"content":" * Parses the given {@code String} of arguments in the context of the AddPropertyToBuyCommand","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" * and returns an AddPropertyToBuyCommand object for execution.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xqtann"},"content":" public AddPropertyToBuyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xqtann"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_HOUSING_TYPE, PREFIX_BUYING_PRICE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xqtann"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER, PREFIX_TAG);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_HOUSING_TYPE, PREFIX_BUYING_PRICE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xqtann"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":" AddPropertyToBuyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":" Index index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":" try {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xqtann"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xqtann"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":" AddPropertyToBuyCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xqtann"},"content":" // Create a new Property object here and pass it to AddPropertyToBuyCommand(Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xqtann"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_HOUSING_TYPE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xqtann"},"content":" PREFIX_BUYING_PRICE, PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xqtann"},"content":" HousingType housingType \u003d ParserUtil.parseHousingType(argMultimap.getValue(PREFIX_HOUSING_TYPE).get());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xqtann"},"content":" Price buyingPrice \u003d ParserUtil.parseBuyingPrice(argMultimap.getValue(PREFIX_BUYING_PRICE).get());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xqtann"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTAL_CODE).get());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xqtann"},"content":" UnitNumber unitNumber \u003d ParserUtil.parseUnitNumber(argMultimap.getValue(PREFIX_UNIT_NUMBER).get());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xqtann"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xqtann"},"content":" Property property \u003d getSpecificPropertyObject(housingType, buyingPrice, postalCode, unitNumber, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xqtann"},"content":" return new AddPropertyToBuyCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xqtann"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xqtann"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xqtann"},"content":" private static Property getSpecificPropertyObject(HousingType housingType, Price buyingPrice,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xqtann"},"content":" PostalCode postalCode, UnitNumber unitNumber, Set\u003cTag\u003e tagList) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xqtann"},"content":" return switch (housingType) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xqtann"},"content":" case CONDO -\u003e new Condo(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xqtann"},"content":" case HDB -\u003e new Hdb(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xqtann"},"content":" case APARTMENT -\u003e new Apartment(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xqtann"},"content":" case BTO -\u003e new Bto(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xqtann"},"content":" case OTHERS -\u003e new OtherProperty(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xqtann"},"content":" default -\u003e null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xqtann"},"content":" };","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xqtann"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"xqtann":86}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyToSellParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.AddPropertyToSellCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Apartment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Bto;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Condo;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Hdb;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.HousingType;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.OtherProperty;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses input arguments and creates a new AddPropertyToSellCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellParser implements Parser\u003cAddPropertyToSellCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses the given {@code String} of arguments in the context of the AddPropertyToSellCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" * and returns an AddPropertyToSellCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" public AddPropertyToSellCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_HOUSING_TYPE, PREFIX_SELLING_PRICE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER, PREFIX_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" Index index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" try {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" /*throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand.MESSAGE_USAGE), pe);*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Removed this condition, not sure what it means :/","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" // || !argMultimap.getPreamble().isEmpty()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_HOUSING_TYPE, PREFIX_SELLING_PRICE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a new Property object here and pass it to AddPropertyToSellCommand(Property property);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_HOUSING_TYPE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" PREFIX_SELLING_PRICE, PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" HousingType housingType \u003d ParserUtil.parseHousingType(argMultimap.getValue(PREFIX_HOUSING_TYPE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" Price sellingPrice \u003d ParserUtil.parseSellingPrice(argMultimap.getValue(PREFIX_SELLING_PRICE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTAL_CODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d ParserUtil.parseUnitNumber(argMultimap.getValue(PREFIX_UNIT_NUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d getSpecificPropertyObject(housingType, sellingPrice, postalCode, unitNumber, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" return new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" private static Property getSpecificPropertyObject(HousingType housingType, Price sellingPrice,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode, UnitNumber unitNumber, Set\u003cTag\u003e tagList) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" return switch (housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" case CONDO -\u003e new Condo(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" case HDB -\u003e new Hdb(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" case APARTMENT -\u003e new Apartment(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" case BTO -\u003e new Bto(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" case OTHERS -\u003e new OtherProperty(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" default -\u003e null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" };","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":91}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.AddPropertyToSellCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindPhoneNumberCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"triishaa"},"content":" case FindNameCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"triishaa"},"content":" return new FindNameCommandParser().parse(arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"triishaa"},"content":" case FindPhoneNumberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"triishaa"},"content":" return new FindPhoneNumberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" case AddPropertyToSellCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" return new AddPropertyToSellParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xqtann"},"content":" case AddPropertyToBuyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xqtann"},"content":" return new AddPropertyToBuyParser().parse(arguments);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"xqtann":4,"OrangeCatLoves":4,"triishaa":7,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_HOUSING_TYPE \u003d new Prefix(\"ht/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_SELLING_PRICE \u003d new Prefix(\"sp/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_BUYING_PRICE \u003d new Prefix(\"bp/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_POSTAL_CODE \u003d new Prefix(\"pc/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_UNIT_NUMBER \u003d new Prefix(\"un/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"ITZXITZX":5,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/FindNameCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":" * Parses input arguments and creates a new FindNameCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindNameCommandParser implements Parser\u003cFindNameCommand\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" * Parses the given {@code String} of arguments in the context of the FindNameCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" * and returns a FindNameCommand object for execution.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" public FindNameCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindNameCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" return new FindNameCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"triishaa":8,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/FindPhoneNumberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindPhoneNumberCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":" * Parses input arguments and creates a new FindContactCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommandParser implements Parser\u003cFindPhoneNumberCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" * Parses the given {@code String} of arguments in the context of the FindPhoneNumberCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" * and returns a FindPhoneNumberCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" public FindPhoneNumberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindPhoneNumberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" String[] phoneNumberKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" return new FindPhoneNumberCommand(new PhoneNumberContainsKeywordPredicate(Arrays.asList(phoneNumberKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"triishaa":10,"-":23}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.HousingType;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String housingType} into a {@code HousingType}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code housingType} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" public static HousingType parseHousingType(String housingType) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(housingType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedHousingType \u003d housingType.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" if (!HousingType.isValidHousingType(trimmedHousingType)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(\"Housing type is not a non-zero unsigned integer.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" return HousingType.getHousingType(trimmedHousingType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String sellingPrice} into a {@code SellingPrice}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code sellingPrice} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"OrangeCatLoves"},"content":" public static Price parseSellingPrice(String sellingPrice) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(sellingPrice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedSellingPrice \u003d sellingPrice.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"OrangeCatLoves"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedSellingPrice)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(\"Selling price is not a non-zero unsigned integer.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"OrangeCatLoves"},"content":" return new Price(trimmedSellingPrice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"xqtann"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"xqtann"},"content":" * Parses a {@code String buyingPrice} into a {@code BuyingPrice}.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"xqtann"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"xqtann"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"xqtann"},"content":" * @throws ParseException if the given {@code buyingPrice} is invalid.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"xqtann"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"xqtann"},"content":" public static Price parseBuyingPrice(String buyingPrice) throws ParseException {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"xqtann"},"content":" requireNonNull(buyingPrice);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"xqtann"},"content":" String trimmedBuyingPrice \u003d buyingPrice.trim();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"xqtann"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedBuyingPrice)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"xqtann"},"content":" throw new ParseException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"xqtann"},"content":" return new Price(trimmedBuyingPrice);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String postalCode} into a {@code PostalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"OrangeCatLoves"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"OrangeCatLoves"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"xqtann"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"OrangeCatLoves"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String unitNumber} into a {@code UnitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"OrangeCatLoves"},"content":" public static UnitNumber parseUnitNumber(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"OrangeCatLoves"},"content":" if (!UnitNumber.isValidUnitNumber(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"xqtann"},"content":" throw new ParseException(UnitNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"OrangeCatLoves"},"content":" return new UnitNumber(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"xqtann":17,"OrangeCatLoves":62,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean hasSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" // There\u0027s no get method for ObservableList, so we can\u0027t get the property at the index","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" //Person specificPerson \u003d persons.get(index.getZeroBased());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Property p) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" //properties.add(p);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":16,"-":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" boolean hasSellProperty(Index index, Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" * Adds the given property to the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" * {@code property} must not already exist in the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" void addSellProperty(Index index, Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"triishaa"},"content":" /** Returns an unmodifiable view of filtered person based on their phone number */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"triishaa"},"content":" ObservableList\u003cPerson\u003e getFilteredPhoneNumberList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":13,"triishaa":3,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean hasSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" return addressBook.hasSellProperty(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" addressBook.addSellProperty(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"triishaa"},"content":" public ObservableList\u003cPerson\u003e getFilteredPhoneNumberList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"triishaa"},"content":" return filteredPersons;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":16,"triishaa":4,"-":148}},{"path":"src/main/java/seedu/address/model/person/Apartment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents an Apartment in the address book. A subclass of Property class","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Apartment extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Apartment names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code Apartment}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid apartment postalCode.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" * @param unitNumber A valid unit number.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" * @param price A valid price.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" public Apartment(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherApartment) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherApartment) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherApartment)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherApartment instanceof Apartment)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":43}},{"path":"src/main/java/seedu/address/model/person/Bto.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a BTO in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Bto extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"BTO names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code BTO}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid BTO postalCode.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" * @param unitNumber A valid unit number.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" * @param price A valid price.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" public Bto(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherBto) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherBto)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherBto instanceof Bto)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":41}},{"path":"src/main/java/seedu/address/model/person/Condo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a Condo in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Condo extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Condo names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public Condo(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherCondo) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherCondo) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherCondo)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherCondo instanceof Condo)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":37}},{"path":"src/main/java/seedu/address/model/person/Hdb.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents an HDB in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Hdb extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"HDB names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public Hdb(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherHdb) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherHdb) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherHdb)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherHdb instanceof Hdb)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":37}},{"path":"src/main/java/seedu/address/model/person/HousingType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents the type of housing that a person resides in.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"public enum HousingType {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":" CONDO, HDB, APARTMENT, BTO, OTHERS, INVALID_HOUSING_TYPE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" * Checks if the given housing type is valid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" * @param housingType The housing type to be checked.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * @return True if the housing type is valid, false otherwise.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidHousingType(String housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" return housingType.equals(\"a\") || housingType.equals(\"c\") || housingType.equals(\"b\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" || housingType.equals(\"h\") || housingType.equals(\"o\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns the HousingType enum corresponding to the given housing type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" * @param housingType The housing type to be converted.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" * @return The HousingType enum corresponding to the given housing type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public static HousingType getHousingType(String housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" return switch (housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" case \"a\" -\u003e APARTMENT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" case \"c\" -\u003e CONDO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" case \"b\" -\u003e BTO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" case \"h\" -\u003e HDB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" case \"o\" -\u003e OTHERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" default -\u003e INVALID_HOUSING_TYPE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" };","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":36}},{"path":"src/main/java/seedu/address/model/person/OtherProperty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents an Other Property in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class OtherProperty extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Other Property names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public OtherProperty(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherProperty) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherProperty) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherProperty)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherProperty instanceof OtherProperty)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.List;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" // Property details","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" private List\u003cProperty\u003e sellingProperties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" private List\u003cProperty\u003e buyingProperties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":" * Constructor for when there are properties to be added.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, List\u003cProperty\u003e sellingProperties,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" List\u003cProperty\u003e buyingProperties) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" this.sellingProperties \u003d sellingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" this.buyingProperties \u003d buyingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" public List\u003cProperty\u003e getListOfSellingProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" return sellingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" public List\u003cProperty\u003e getListOfBuyingProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" return buyingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Potatoad88"},"content":" * Returns true if property is in the list of properties to buy.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Potatoad88"},"content":" * @param property Property to check","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Potatoad88"},"content":" * @return boolean","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Potatoad88"},"content":" public boolean containsBuyProperty(Property property) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Potatoad88"},"content":" return buyingProperties.contains(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Potatoad88"},"content":" * Adds a property to the list of properties to buy.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Potatoad88"},"content":" * @param property Property to add","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Potatoad88"},"content":" public void addBuyProperty(Property property) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Potatoad88"},"content":" buyingProperties.add(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if property is in the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" * @param property Property to check","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" * @return boolean","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean containsSellProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" return sellingProperties.contains(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" * Adds a property to the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" * @param property Property to add","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" sellingProperties.add(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Potatoad88":35,"OrangeCatLoves":28,"-":117}},{"path":"src/main/java/seedu/address/model/person/PhoneNumberContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"triishaa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"triishaa"},"content":"import java.util.List;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"triishaa"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"triishaa"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"triishaa"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":"public class PhoneNumberContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"triishaa"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"triishaa"},"content":" public PhoneNumberContainsKeywordPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"triishaa"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getPhone().value, keyword));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" return true;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"triishaa"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" if (!(other instanceof PhoneNumberContainsKeywordPredicate)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"triishaa"},"content":" return false;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate otherPhoneNumberContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"triishaa"},"content":" (PhoneNumberContainsKeywordPredicate) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"triishaa"},"content":" return keywords.equals(otherPhoneNumberContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"triishaa"},"content":" public String toString() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"triishaa"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"triishaa"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"triishaa":45}},{"path":"src/main/java/seedu/address/model/person/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a PostalCode of a Property in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Postal codes should only contain numbers and be 6 digits long\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid postal code.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" this.value \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a given string is a valid postal code.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidPostalCode(String postalCode) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof PostalCode // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 value.equals(((PostalCode) other).value)); // state check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":44}},{"path":"src/main/java/seedu/address/model/person/Price.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a Price of a Property in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"public class Price {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Prices should be numeric\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d+\"; // Checks if the price is numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code Price}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * @param price A valid price.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" public Price(String price) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" this.value \u003d price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a given string is a valid price.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidPrice(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof Price // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 value.equals(((Price) other).value)); // state check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":44}},{"path":"src/main/java/seedu/address/model/person/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"public abstract class Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Property names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" private final UnitNumber unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private final Price price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code Property}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid property name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public Property(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" this.price \u003d price;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" this.tags \u003d tags;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" public UnitNumber getUnitNumber() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" return unitNumber;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public Price getPrice() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" return price;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if the property is the same as the other property.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 this.getClass().equals(otherProperty.getClass())","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 otherProperty.getUnitNumber().equals(getUnitNumber());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode.equals(otherProperty.postalCode) \u0026\u0026 unitNumber.equals(otherProperty.unitNumber);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" return \"[\" + postalCode + \"]\" + \" Unit Number: \" + unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":92}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" * persons uses Person#isSamePerson(Person) for equality to ensure that the person being added or updated is","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":" * to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"triishaa":2,"-":147}},{"path":"src/main/java/seedu/address/model/person/UnitNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a UnitNumber of a Property in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"public class UnitNumber {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Unit numbers should be alphanumeric\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d+-\\\\d+\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code UnitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" * @param unitNumber A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" public UnitNumber(String unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" this.value \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidUnitNumber(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof UnitNumber // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 value.equals(((UnitNumber) other).value)); // state check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} ]+\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"-":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" /*@JsonCreator","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"sellProperties\") List\u003cJsonAdaptedProperty\u003e sellProperties,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"buyProperties\") List\u003cJsonAdaptedProperty\u003e buyProperties) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":14,"-":109}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"triishaa"},"content":" public ObservableList\u003cPerson\u003e getFilteredPhoneNumberList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"triishaa"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"OrangeCatLoves"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean hasSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"OrangeCatLoves"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":10,"triishaa":4,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyToBuyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Potatoad88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Potatoad88"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Potatoad88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Potatoad88"},"content":"public class AddPropertyToBuyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Potatoad88"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Potatoad88"},"content":" private final Property property \u003d new PropertyBuilder().build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Potatoad88"},"content":" private final Index indexWithProperty \u003d Index.fromZeroBased(7);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Potatoad88"},"content":" private final Index indexWithoutProperty \u003d Index.fromZeroBased(0);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Potatoad88"},"content":" private final Index invalidIndex \u003d Index.fromZeroBased(1000);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Potatoad88"},"content":" public void execute_validModel_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand command \u003d new AddPropertyToBuyCommand(indexWithoutProperty, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Potatoad88"},"content":" assertEquals(AddPropertyToBuyCommand.MESSAGE_SUCCESS, result.getFeedbackToUser());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Potatoad88"},"content":" public void execute_duplicateProperty_throwsCommandException() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand command \u003d new AddPropertyToBuyCommand(indexWithProperty, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Potatoad88"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand.MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand command \u003d new AddPropertyToBuyCommand(invalidIndex, property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" public void equals() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" Property differentProperty \u003d new PropertyBuilder().withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand commandWithSameValues \u003d new AddPropertyToBuyCommand(indexWithoutProperty,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":" property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand commandWithDifferentProperty \u003d new AddPropertyToBuyCommand(indexWithoutProperty,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" differentProperty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand commandWithDifferentIndex \u003d new AddPropertyToBuyCommand(indexWithProperty, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Potatoad88"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Potatoad88"},"content":" assertEquals(commandWithSameValues, commandWithSameValues);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Potatoad88"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Potatoad88"},"content":" assertEquals(commandWithSameValues, new AddPropertyToBuyCommand(indexWithoutProperty, property));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Potatoad88"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Potatoad88"},"content":" assertNotEquals(commandWithSameValues, 1);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Potatoad88"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Potatoad88"},"content":" assertNotEquals(commandWithSameValues, null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Potatoad88"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Potatoad88"},"content":" assertNotEquals(commandWithSameValues, commandWithDifferentProperty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Potatoad88"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Potatoad88":76}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyToSellCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index index \u003d Index.fromZeroBased(7);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private final Property property \u003d new PropertyBuilder().build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index indexWithProperty \u003d Index.fromZeroBased(7);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index indexWithoutProperty \u003d Index.fromZeroBased(0);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index invalidIndex \u003d Index.fromZeroBased(1000);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" public void constructor_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPropertyToSellCommand(index, null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" public void execute_validModel_success() throws Exception {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" //assertEquals(AddPropertyToSellCommand.MESSAGE_SUCCESS, result.getFeedbackToUser());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" public void execute_duplicateProperty_throwsCommandException() throws Exception {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d new AddPropertyToSellCommand(indexWithProperty, property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" /*Assertions.assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand.MESSAGE_DUPLICATE_PROPERTY);*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d new AddPropertyToSellCommand(invalidIndex, property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" Assertions.assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand addPropertyToSellCommand \u003d new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(addPropertyToSellCommand.equals(addPropertyToSellCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand addPropertyToSellCommandCopy \u003d new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(addPropertyToSellCommand.equals(addPropertyToSellCommandCopy));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(addPropertyToSellCommand.equals(1));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(addPropertyToSellCommand.equals(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" Property differentProperty \u003d new PropertyBuilder().withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand addDifferentPropertyCommand \u003d new AddPropertyToSellCommand(index, differentProperty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(addPropertyToSellCommand.equals(addDifferentPropertyCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BUYING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" public static final String VALID_HOUSING_TYPE_HDB \u003d \"h\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":" public static final String VALID_HOUSING_TYPE_CONDO \u003d \"c\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":" public static final String VALID_BUYING_PRICE_1650000 \u003d \"1650000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xqtann"},"content":" public static final String VALID_BUYING_PRICE_1900000 \u003d \"1900000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":" public static final String VALID_SELLING_PRICE_1500000 \u003d \"1500000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xqtann"},"content":" public static final String VALID_SELLING_PRICE_2000000 \u003d \"2000000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":" public static final String VALID_POSTAL_CODE_567510 \u003d \"567510\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xqtann"},"content":" public static final String VALID_POSTAL_CODE_582090 \u003d \"582090\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xqtann"},"content":" public static final String VALID_UNIT_NUMBER_10_65 \u003d \"10-65\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":" public static final String VALID_UNIT_NUMBER_03_11 \u003d \"03-11\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":" public static final String VALID_TAG_SPACIOUS \u003d \"spacious\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xqtann"},"content":" public static final String VALID_TAG_NEAR_MRT \u003d \"near MRT\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xqtann"},"content":" public static final String HOUSING_TYPE_DESC_HDB \u003d \" \" + PREFIX_HOUSING_TYPE + VALID_HOUSING_TYPE_HDB;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xqtann"},"content":" public static final String HOUSING_TYPE_DESC_CONDO \u003d \" \" + PREFIX_HOUSING_TYPE + VALID_HOUSING_TYPE_CONDO;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":" public static final String BUYING_PRICE_DESC_1650000 \u003d \" \" + PREFIX_BUYING_PRICE + VALID_BUYING_PRICE_1650000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xqtann"},"content":" public static final String BUYING_PRICE_DESC_1900000 \u003d \" \" + PREFIX_BUYING_PRICE + VALID_BUYING_PRICE_1900000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xqtann"},"content":" public static final String SELLING_PRICE_DESC_1500000 \u003d \" \" + PREFIX_SELLING_PRICE + VALID_SELLING_PRICE_1500000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xqtann"},"content":" public static final String SELLING_PRICE_DESC_2000000 \u003d \" \" + PREFIX_SELLING_PRICE + VALID_SELLING_PRICE_2000000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xqtann"},"content":" public static final String POSTAL_CODE_DESC_567510 \u003d \" \" + PREFIX_POSTAL_CODE + VALID_POSTAL_CODE_567510;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xqtann"},"content":" public static final String POSTAL_CODE_DESC_582090 \u003d \" \" + PREFIX_POSTAL_CODE + VALID_POSTAL_CODE_582090;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xqtann"},"content":" public static final String UNIT_NUMBER_DESC_10_65 \u003d \" \" + PREFIX_UNIT_NUMBER + VALID_UNIT_NUMBER_10_65;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xqtann"},"content":" public static final String UNIT_NUMBER_DESC_03_11 \u003d \" \" + PREFIX_UNIT_NUMBER + VALID_UNIT_NUMBER_03_11;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xqtann"},"content":" public static final String TAG_DESC_SPACIOUS \u003d \" \" + PREFIX_TAG + VALID_TAG_SPACIOUS;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xqtann"},"content":" public static final String TAG_DESC_NEAR_MRT \u003d \" \" + PREFIX_TAG + VALID_TAG_NEAR_MRT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_HOUSING_TYPE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_HOUSING_TYPE + \"x\"; // \u0027x\u0027 not a valid housing type","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_BUYING_PRICE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_BUYING_PRICE + \"1.65million\"; // \u0027million\u0027 not allowed in prices","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_SELLING_PRICE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_SELLING_PRICE + \"1.65M\"; // \u0027M\u0027 not allowed in prices","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_POSTAL_CODE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_POSTAL_CODE + \"1234567\"; // 7 digits not allowed in postal code","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_UNIT_NUMBER_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_UNIT_NUMBER + \"10-65-01\"; // \u002701\u0027 not allowed in unit number","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xqtann"},"content":" public static final String PREAMBLE_INDEX \u003d \"1\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":155,"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","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"xqtann":40,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/FindNameCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":" * Contains integration tests (interaction with the Model) for {@code FindNameCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":"public class FindNameCommandTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"triishaa"},"content":" FindNameCommand findFirstCommand \u003d new FindNameCommand(firstPredicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"triishaa"},"content":" FindNameCommand findSecondCommand \u003d new FindNameCommand(secondPredicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" FindNameCommand findFirstCommandCopy \u003d new FindNameCommand(firstPredicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"triishaa"},"content":" FindNameCommand command \u003d new FindNameCommand(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"triishaa"},"content":" FindNameCommand command \u003d new FindNameCommand(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"triishaa"},"content":" FindNameCommand findNameCommand \u003d new FindNameCommand(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"triishaa"},"content":" String expected \u003d FindNameCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"triishaa"},"content":" assertEquals(expected, findNameCommand.toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"triishaa":10,"-":81}},{"path":"src/test/java/seedu/address/logic/commands/FindPhoneNumberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"triishaa"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"triishaa"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"triishaa"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"triishaa"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"triishaa"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":" * Contains integration tests (interaction with the Model) for {@code FindPhoneNumberCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"triishaa"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"triishaa"},"content":" new PhoneNumberContainsKeywordPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"triishaa"},"content":" new PhoneNumberContainsKeywordPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findFirstCommand \u003d new FindPhoneNumberCommand(firstPredicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findSecondCommand \u003d new FindPhoneNumberCommand(secondPredicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"triishaa"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"triishaa"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"triishaa"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findFirstCommandCopy \u003d new FindPhoneNumberCommand(firstPredicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"triishaa"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"triishaa"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"triishaa"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"triishaa"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"triishaa"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"triishaa"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"triishaa"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"triishaa"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"triishaa"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand command \u003d new FindPhoneNumberCommand(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"triishaa"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"triishaa"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"triishaa"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"triishaa"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"triishaa"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate predicate \u003d preparePredicate(\"95352563 9482224 9482427\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand command \u003d new FindPhoneNumberCommand(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"triishaa"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"triishaa"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"triishaa"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"triishaa"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate predicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"triishaa"},"content":" new PhoneNumberContainsKeywordPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findPhoneNumberCommand \u003d new FindPhoneNumberCommand(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"triishaa"},"content":" String expected \u003d FindPhoneNumberCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"triishaa"},"content":" assertEquals(expected, findPhoneNumberCommand.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"triishaa"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"triishaa"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"triishaa"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"triishaa"},"content":" private PhoneNumberContainsKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"triishaa"},"content":" return new PhoneNumberContainsKeywordPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"triishaa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"triishaa":92}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyToBuyParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BUYING_PRICE_DESC_1650000;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUSING_TYPE_DESC_HDB;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_BUYING_PRICE_DESC;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTAL_CODE_DESC;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_NUMBER_DESC;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTAL_CODE_DESC_567510;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_INDEX;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NEAR_MRT;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_NUMBER_DESC_03_11;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Hdb;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xqtann"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xqtann"},"content":"public class AddPropertyToBuyParserTest {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xqtann"},"content":" private AddPropertyToBuyParser parser \u003d new AddPropertyToBuyParser();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" public void parse_allFieldsPresent_success() throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":" Property expectedProperty \u003d new Hdb(new PostalCode(\"567510\"), new UnitNumber(\"03-11\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":" new Price(\"1650000\"), SampleDataUtil.getTagSet(\"near MRT\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":" assertParseSuccess(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xqtann"},"content":" new AddPropertyToBuyCommand(Index.fromOneBased(1), expectedProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":" // zero tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":" Property expectedProperty \u003d new PropertyBuilder().withPostalCode(\"567510\").withUnitNumber(\"03-11\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xqtann"},"content":" .withPrice(\"1650000\").build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xqtann"},"content":" assertParseSuccess(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xqtann"},"content":" new AddPropertyToBuyCommand(Index.fromOneBased(1), expectedProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xqtann"},"content":" public void parse_compulsoryFieldsMissing_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xqtann"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyToBuyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xqtann"},"content":" // missing postal code prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xqtann"},"content":" + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xqtann"},"content":" // missing unit number prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xqtann"},"content":" // missing buying price prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + POSTAL_CODE_DESC_567510","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xqtann"},"content":" + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xqtann"},"content":" // missing housing type prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + BUYING_PRICE_DESC_1650000 + POSTAL_CODE_DESC_567510","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xqtann"},"content":" + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xqtann"},"content":" public void parse_repeatedNonTagPrefix_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicatePc \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"pc/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicateHt \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"ht/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicateBp \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"bp/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicateUn \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"un/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xqtann"},"content":" // repeated postal code prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicatePc);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xqtann"},"content":" // repeated unit number prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicateUn);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xqtann"},"content":" // repeated buying price prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xqtann"},"content":" + BUYING_PRICE_DESC_1650000 + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicateBp);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xqtann"},"content":" // repeated housing type prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + HOUSING_TYPE_DESC_HDB","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xqtann"},"content":" + BUYING_PRICE_DESC_1650000 + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicateHt);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xqtann"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xqtann"},"content":" // invalid postal code","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xqtann"},"content":" + INVALID_POSTAL_CODE_DESC + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xqtann"},"content":" PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xqtann"},"content":" // invalid unit number","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + INVALID_UNIT_NUMBER_DESC + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xqtann"},"content":" UnitNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xqtann"},"content":" // invalid buying price","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + INVALID_BUYING_PRICE_DESC","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xqtann"},"content":" Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xqtann"},"content":" // invalid housing type","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xqtann"},"content":" // assertParseFailure(parser, PREAMBLE_INDEX + INVALID_HOUSING_TYPE_DESC + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xqtann"},"content":" // + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, Hdb.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xqtann"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"xqtann":128}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyToSellParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellParserTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private AddPropertyToSellParser parser \u003d new AddPropertyToSellParser();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" parser \u003d new AddPropertyToSellParser();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_missingSellingPrice_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" // Given a user input missing the selling price","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d \"1 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \" apartment \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \" 123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \" 10-01 \";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" // When parsing, then a ParseException should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidSellingPrice_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" // Given a user input with an invalid selling price","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d \"1 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \" apartment \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \" notANumber \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \" 123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \" 10-01 \";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" // When parsing, then a ParseException should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_missingHousingType_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidHousingType_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"InvalidType \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidPostalCode_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"Condo \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"invalidPostalCode \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_missingRequiredFields_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidUnitNumber_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"Condo \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"invalidUnitNumber \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidTag_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"Condo \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"InvalidTag\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_allFieldsPresent_success() throws ParseException {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"a \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" // No exception should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_allFieldsPresent_success2() throws ParseException {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"a \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" // No exception should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":139}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"//import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"//import seedu.address.logic.commands.AddPropertyToSellCommand;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"//import seedu.address.model.person.Condo;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"/*import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;*/","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"triishaa"},"content":" FindNameCommand command \u003d (FindNameCommand) parser.parseCommand(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"triishaa"},"content":" FindNameCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"triishaa"},"content":" assertEquals(new FindNameCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" public void parseCommand_addSell() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" /*PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" Price sellingPrice \u003d new Price(\"1.65M\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(Arrays.asList(\"Extremely spacious\", \"Near MRT\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d new Condo(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d (AddPropertyToSellCommand)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(new AddPropertyToSellCommand(), command);*/","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xqtann"},"content":" public void parseCommand_addBuy() throws Exception {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xqtann"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xqtann"},"content":" Property property \u003d new PropertyBuilder().build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xqtann"},"content":" AddPropertyToBuyCommand command \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xqtann"},"content":" (AddPropertyToBuyCommand) parser.parseCommand(\"addBuy 1 ht/c bp/1500000 pc/123456 un/10-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xqtann"},"content":" assertEquals(new AddPropertyToBuyCommand(index, property), command);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"xqtann":14,"OrangeCatLoves":21,"triishaa":4,"-":97}},{"path":"src/test/java/seedu/address/logic/parser/FindNameCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindNameCommandParserTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" private FindNameCommandParser parser \u003d new FindNameCommandParser();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" FindNameCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" FindNameCommand expectedFindNameCommand \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" new FindNameCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindNameCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindNameCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"triishaa":9,"-":26}},{"path":"src/test/java/seedu/address/logic/parser/FindPhoneNumberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"triishaa"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindPhoneNumberCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" private FindPhoneNumberCommandParser parser \u003d new FindPhoneNumberCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindPhoneNumberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand expectedFindPhoneNumber \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" new FindPhoneNumberCommand(new PhoneNumberContainsKeywordPredicate(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":" Arrays.asList(\"12345678\", \"987654321\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \"12345678 987654321\", expectedFindPhoneNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \" \\n 12345678 \\n \\t 987654321 \\t\", expectedFindPhoneNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"triishaa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"triishaa":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Apartment;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager \u003d new ModelManager();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" public void hasSellProperty_propertyNotAdded_returnsFalse() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a person and add them to the address book","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager.addPerson(person);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a property but don\u0027t add it to the person","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d createTestProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" // Ensure that the property is not in the person\u0027s list (should return false)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(modelManager.hasSellProperty(Index.fromZeroBased(0), property));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" public void hasSellProperty_propertyAdded_returnsTrue() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a person and add them to the address book","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager.addPerson(person);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a property and add it to the person","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d createTestProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager.addSellProperty(Index.fromZeroBased(0), property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" // Ensure that the property is in the person\u0027s list (should return true)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" // Helper method to create a Property object for testing","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" private Property createTestProperty() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"New\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" return new Apartment(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":52,"-":132}},{"path":"src/test/java/seedu/address/model/person/ApartmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class ApartmentTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Apartment apartment1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Apartment apartment2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" apartment1 \u003d new Apartment(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" apartment2 \u003d new Apartment(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Luxury\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Apartment objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment2 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment3 \u003d new Apartment(new PostalCode(\"654321\"), new UnitNumber(\"20-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"2000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto1 \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"1000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" // Example: Asserting that two different objects are not equal (should return false)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(bto1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Apartment object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(apartment3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not an Apartment","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(new Object())); // Different type should return false*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, apartment1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, apartment1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, apartment1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), apartment1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentApartment_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(apartment2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameApartment_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment sameApartment \u003d new Apartment(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(sameApartment));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameApartment_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment sameApartment \u003d new Apartment(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(apartment1.hashCode(), sameApartment.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, apartment1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":142}},{"path":"src/test/java/seedu/address/model/person/BtoTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class BtoTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Bto bto1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Bto bto2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" bto1 \u003d new Bto(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" bto2 \u003d new Bto(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Subsidized\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Bto objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto1 \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto2 \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto3 \u003d new Bto(new PostalCode(\"654321\"), new UnitNumber(\"20-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(bto1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(bto2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Bto object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(bto3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not a Bto","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Apartment)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(apartment)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, bto1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, bto1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, bto1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), bto1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(bto1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentBto_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(bto2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameBto_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" Bto sameBto \u003d new Bto(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(sameBto));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameBto_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" Bto sameBto \u003d new Bto(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(bto1.hashCode(), sameBto.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, bto1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":142}},{"path":"src/test/java/seedu/address/model/person/CondoTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"public class CondoTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" public void constructor_validInputs_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode, condo.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber, condo.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price, condo.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(tags, condo.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Luxury\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Condo objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo1 \u003d new Condo(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo2 \u003d new Condo(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo3 \u003d new Condo(new PostalCode(\"654321\"), new UnitNumber(\"20-01\"), new Price(\"750000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(condo1.equals(condo1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(apartment1)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(condo1.equals(condo2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(condo1.equals(condo2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Condo object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(condo3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not a Condo","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Bto)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(bto)); // Different subclass should return false*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentCondo_returnsFalse() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode1 \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode2 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo1 \u003d new Condo(postalCode1, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo2 \u003d new Condo(postalCode2, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(condo2)); // different condo","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameAttributes_sameHashCode() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo1 \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo2 \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(condo1.hashCode(), condo2.hashCode()); // same attributes, same hash code","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_validCondo_correctFormat() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[567510] Unit Number: 10-65\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, condo.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":105}},{"path":"src/test/java/seedu/address/model/person/HdbTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class HdbTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Hdb hdb1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Hdb hdb2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" hdb1 \u003d new Hdb(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" hdb2 \u003d new Hdb(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Affordable\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Hdb objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb hdb1 \u003d new Hdb(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb hdb2 \u003d new Hdb(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb hdb3 \u003d new Hdb(new PostalCode(\"654321\"), new UnitNumber(\"02-02\"), new Price(\"350000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(apartment1)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Hdb object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(hdb3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not an Hdb","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Bto)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(bto)); // Different subclass should return false*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, hdb1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, hdb1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, hdb1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), hdb1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentHdb_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(hdb2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameHdb_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb sameHdb \u003d new Hdb(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(sameHdb));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameHdb_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb sameHdb \u003d new Hdb(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(hdb1.hashCode(), sameHdb.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, hdb1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":142}},{"path":"src/test/java/seedu/address/model/person/OtherPropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class OtherPropertyTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private OtherProperty otherProperty1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private OtherProperty otherProperty2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" otherProperty1 \u003d new OtherProperty(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" otherProperty2 \u003d new OtherProperty(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Luxurious\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some OtherProperty objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty otherProperty1 \u003d new OtherProperty(new PostalCode(\"123456\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"01-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty otherProperty2 \u003d new OtherProperty(new PostalCode(\"123456\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"01-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty otherProperty3 \u003d new OtherProperty(new PostalCode(\"654321\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"02-02\"), new Price(\"600000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(otherProperty1.equals(otherProperty1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(apartment1)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(otherProperty1.equals(otherProperty2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(otherProperty1.equals(otherProperty2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different OtherProperty object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(otherProperty3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not an OtherProperty","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Bto)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(bto)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, otherProperty1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, otherProperty1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, otherProperty1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), otherProperty1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentOtherProperty_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(otherProperty2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameOtherProperty_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty sameOtherProperty \u003d new OtherProperty(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(otherProperty1.hashCode(), sameOtherProperty.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, otherProperty1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":133}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPhoneMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getPhone(), ALICE.getPhone());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":" public void getEmailMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getEmail(), ALICE.getEmail());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" public void getAddressMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getAddress(), ALICE.getAddress());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTagsMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getTags(), ALICE.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void getListOfSellingPropertiesMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getListOfSellingProperties(), ALICE.getListOfSellingProperties());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" public void getListOfBuyingPropertiesMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getListOfBuyingProperties(), ALICE.getListOfBuyingProperties());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" public void containsBuyPropertyMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment property \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-65\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1500000\"), ALICE.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(ALICE.containsBuyProperty(property));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" public void addBuyPropertyMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment property \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-65\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1500000\"), ALICE.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" ALICE.addBuyProperty(property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(ALICE.containsBuyProperty(property));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":" public void isSamePersonMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"OrangeCatLoves"},"content":" public void equalsMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"OrangeCatLoves"},"content":" public void toStringMethod2() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.toString(), ALICE.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCodeMethod2() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.hashCode(), ALICE.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":58,"-":99}},{"path":"src/test/java/seedu/address/model/person/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Property property1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Property property2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" // Assuming the constructors for PostalCode, UnitNumber, and Price are simple and available","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" property1 \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" property2 \u003d new Property(postalCode2, unitNumber2, price2, tags2) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, property1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, property1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, property1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), property1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" public void isSameProperty_sameProperty_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" Property sameProperty \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(property1.isSameProperty(sameProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" public void isSameProperty_differentProperties_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.isSameProperty(property2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(property1.equals(property1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentProperties_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.equals(property2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameProperties_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" Property sameProperty \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(property1.equals(sameProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameProperties_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" Property sameProperty \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(property1.hashCode(), sameProperty.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, property1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":124}},{"path":"src/test/java/seedu/address/testutil/IndexBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" * A utility class to help with building Index objects.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"public class IndexBuilder {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" private final int index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public IndexBuilder() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":" index \u003d 1;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" public Index build() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" return Index.fromZeroBased(index);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import java.util.List;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" private List\u003cProperty\u003e buyingProperties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code buyingProperties} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Potatoad88"},"content":" public PersonBuilder withBuyProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Potatoad88"},"content":" this.buyingProperties.add(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Potatoad88"},"content":" return new Person(name, phone, email, address, tags, null, buyingProperties);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Potatoad88":13,"-":95}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Potatoad88"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Potatoad88"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Potatoad88"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Potatoad88"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Potatoad88"},"content":" public static final String DEFAULT_POSTAL_CODE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Potatoad88"},"content":" public static final String DEFAULT_UNIT_NUMBER \u003d \"10-01\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":" public static final String DEFAULT_PRICE \u003d \"1500000\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Potatoad88"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Potatoad88"},"content":" private UnitNumber unitNumber;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Potatoad88"},"content":" private Price price;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Potatoad88"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Potatoad88"},"content":" * Creates a {@code PropertyBuilder} with the default details.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTAL_CODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" unitNumber \u003d new UnitNumber(DEFAULT_UNIT_NUMBER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Potatoad88"},"content":" price \u003d new Price(DEFAULT_PRICE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Potatoad88"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code UnitNumber} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withUnitNumber(String unitNumber) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" this.unitNumber \u003d new UnitNumber(unitNumber);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code Price} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withPrice(String price) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" this.price \u003d new Price(price);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Potatoad88"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Potatoad88"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Potatoad88"},"content":" public Property build() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Potatoad88"},"content":" return new Property(postalCode, unitNumber, price, tags) {};","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Potatoad88"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"Potatoad88":71}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":" public static final Person HENRY \u003d new PersonBuilder().withName(\"Henry Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":" .withEmail(\"henry@example.com\").withAddress(\"kent ridge\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" .withBuyProperty(new PropertyBuilder().build()).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Potatoad88"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE, HENRY));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Potatoad88":4,"-":75}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F10-3/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp/graph/badge.svg?token\u003dY7MHE94H5W)](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"* This is **a project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"* It is targeted for real estate agents to organise and manage their properties and clients.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":" * Real Estate Agents can organize and categorize client and seller contacts, schedule appointments, contact clients about new property listings that match their client\u0027s preferences, and be notified to contact clients on key dates or at regular intervals.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base of around 6 KLoC.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"* It is named `NUStates` and is adapted from the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":"* For the detailed documentation of this project, see the **[NUStates Product Website](https://ay2425s1-cs2103t-f10-3.github.io/tp/)**.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false}],"authorContributionMap":{"xqtann":9,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"[//]: # (You can reach us at the email `seer[at]comp.nus.edu.sg`)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"[[About Us](https://ay2425s1-cs2103t-f10-3.github.io/tp/)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"## NUStates","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":"### Trisha Patodia","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"\u003cimg src\u003d\"images/triishaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"[[github](http://github.com/triishaa)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"[[portfolio](team/triishaa.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":"* Role: Documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"### Low Wei Bin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"\u003cimg src\u003d\"images/orangecatloves.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":"[[github](http://github.com/orangecatloves)] [[portfolio](team/orangecatloves.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"* Role: Code-Quality","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":"* Responsibilities: Ensures that coding quality is adhered and up to standard for every pull-request","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Potatoad88"},"content":"### Dylan Wong","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":"\u003cimg src\u003d\"images/potatoad88.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":"[[github](https://github.com/Potatoad88)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":"[[portfolio](team/dylan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":"* Role: Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":"* Responsibilities: Ensure testing is done properly and on time","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":"### Tan Xin Quan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":"\u003cimg src\u003d\"images/xqtann.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":"[[github](http://github.com/xqtann)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":"[[portfolio](team/xinquan.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xqtann"},"content":"* Role: Integration Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xqtann"},"content":"* Responsibilities: Ensure proper version control and every PR is reviewed thoroughly","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ITZXITZX"},"content":"### Isaac Teo","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ITZXITZX"},"content":"\u003cimg src\u003d\"images/itzxitzx.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ITZXITZX"},"content":"[[github](https://github.com/itzxitzx)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ITZXITZX"},"content":"[[portfolio](team/isaac.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ITZXITZX"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":"* Responsibilities: Responsible for overall project coordination.","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"xqtann":16,"OrangeCatLoves":5,"Potatoad88":6,"triishaa":1,"ITZXITZX":5,"-":36}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"# NUStates Developer Guide","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ITZXITZX"},"content":"[//]: # (_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ITZXITZX"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"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","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"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","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"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","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"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","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"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","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"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","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"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","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"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","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"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","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"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","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Potatoad88"},"content":"**Target user profile**: Real Estate Agents","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Potatoad88"},"content":"**Value proposition**: organize and categorize client and seller contacts, schedule appointments, contact clients about new property listings that match their client\u0027s preferences, and be notified to contact clients on key dates or at regular intervals.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Potatoad88"},"content":"|----------|--------------------------------------------------------------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Busy Real Estate Agent | search for contacts fast | save time when trying to contact a person |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | be able to add contacts | contact and find details about a person |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | delete contacts of a client | remove irrelevant clients from my list |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | be able to keep track of all the properties listed | help my clients quickly find the best-suited property for them |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | search for properties under me | identify the specific property I want to find |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Potatoad88"},"content":"| `* * *` | Real Estate Agent | view all my clients | browse and find clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | know my total list of clients who are actively searching for homes | have a full view of all of my clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | view full details of a particular client | view all saved details of the client in one place |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | easily update contact details | keep my address book up to date and accurate |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | filter contacts based on names | find contacts I am familiar with via name |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Potatoad88"},"content":"| `* *` | Real Estate Agent | store multiple contacts for each client | contact them via their most comfortable means |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Potatoad88"},"content":"| `*` | Forgetful Real Estate Agent | keep track of the client birthdays | send them well wishes to maintain relations |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Potatoad88"},"content":"| `*` | Forgetful Real Estate Agent | remember what my clients preferences are | contact them when a new property matching their criteria is available |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to mass delete clients | avoid having to do it individually |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Potatoad88"},"content":"| `*` | Forgetful Real Estate Agent who wish to deal with more important clients | categorize different clients/contacts under different priority | remember which contacts are more important |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | filter clients based on some specified criteria | find clients relevant to what I am looking for |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to have multiple accounts/phone numbers | separate contacts from my work life and personal life |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Potatoad88"},"content":"| `*` | Systematic Real Estate Agent | be able to tag my contacts under different labels | have quick search for people by searching for the tag |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to edit client details and contacts | save time when changing the client details without having to delete and recreate them |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | pin certain clients at the top of my list | quickly access those contacts |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | be able to undo a command | recover accidentally executed commands |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | receive validation feedback when entering client details | avoid entering invalid or incorrect details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | be able detect duplicate client contacts | avoid having multiple entries for the same client |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | hide/archive client details | hide completed transactions and past client details, keeping my contact list updated and organized |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Potatoad88"},"content":"| `*` | Busy Real Estate Agent | be able to see a list of my most recently added client contacts | quickly find and access them |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | sort the client list | organize the client list based on my preference |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | view the history of interactions with each contact | remember past conversations and follow-up |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | filter contacts based on their preferred location or address | find contacts which are in a specific area or region quickly |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Potatoad88"},"content":"| `*` | Strategic Real Estate Agent | add custom notes to each contact profile | record specific details or preferences that they have so that I can personalize my service |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | set priority levels for different contacts | focus more attention on the more urgent/important clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | categorize contacts by their preferred language | communicate with the client with their preferred language of choice |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | tag contacts based on the type of property they are interested in | quickly match properties to the right clients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Potatoad88"},"content":"| `*` | Real Estate Agent | segment my contact list by geographic region | target my outreach based on specific property locations or markets |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"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","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Potatoad88"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Potatoad88"},"content":"1. User requests to add a new contact by providing the required details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook validates the provided details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook adds the new contact to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Potatoad88"},"content":"4. AddressBook shows a success message with the contact details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Potatoad88"},"content":"* 2a. The provided details are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Potatoad88"},"content":" * 2a1. AddressBook shows an error message indicating the invalid fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Potatoad88"},"content":" * 2a2. User corrects the invalid details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Potatoad88"},"content":" * 2a3. AddressBook re-validates the details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Potatoad88"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Potatoad88"},"content":"* 2b. The contact already exists in the AddressBook.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Potatoad88"},"content":" * 2b1. AddressBook shows an error message indicating the duplicate contact.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Potatoad88"},"content":"* 2c. Required fields are missing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Potatoad88"},"content":" * 2c1. AddressBook shows an error message indicating the missing fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Potatoad88"},"content":" * 2c2. User provides the missing details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Potatoad88"},"content":" * 2c3. AddressBook re-validates the details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Potatoad88"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Potatoad88"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Potatoad88"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Potatoad88"},"content":"1. User requests to delete a contact by providing the index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook validates the provided index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook deletes the contact from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Potatoad88"},"content":"4. AddressBook shows a success message with the deleted contact details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Potatoad88"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Potatoad88"},"content":"* 2a. The provided index is missing or not a positive integer.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Potatoad88"},"content":" * 2a1. AddressBook shows an error message indicating the invalid index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Potatoad88"},"content":"* 2b. The provided index is more than the number of contacts in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Potatoad88"},"content":" * 2b1. AddressBook shows an error message indicating the invalid index.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Potatoad88"},"content":"**Use case: List all contacts**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Potatoad88"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"Potatoad88"},"content":"1. User requests to list all contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook lists all contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook shows a success message indicating all contacts are listed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Potatoad88"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Potatoad88"},"content":"* 1a. User provides additional arguments after the `list` command.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Potatoad88"},"content":" * 1a1. AddressBook shows an error message indicating that the `list` command takes no arguments.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Potatoad88"},"content":"**Use case: Search for a contact**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Potatoad88"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Potatoad88"},"content":"1. User requests to search for a contact by providing a keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Potatoad88"},"content":"2. AddressBook validates the provided keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"Potatoad88"},"content":"3. AddressBook searches for contacts matching the keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"Potatoad88"},"content":"4. AddressBook shows a list of matching contacts with their details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"Potatoad88"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"Potatoad88"},"content":"* 2a. The provided keyword is missing or invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"Potatoad88"},"content":" * 2a1. AddressBook shows an error message indicating the invalid keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"Potatoad88"},"content":"* 3a. No contacts match the provided keyword.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Potatoad88"},"content":" * 3a1. AddressBook shows a message indicating no contacts were found.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"Potatoad88"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"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","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"OrangeCatLoves"},"content":"4. Client searches should provide results even with partial or incomplete input and return results instantly (within 1 second).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"OrangeCatLoves"},"content":"5. The system should be available 99.9% of the time to ensure real-estate agents can access it whenever they need to.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"OrangeCatLoves"},"content":"6. The system should gracefully handle failures, ensuring no data loss during system crashes or unexpected outages.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"OrangeCatLoves"},"content":"7. All code should be well-documented to ensure future developers can easily understand and modify the application.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"triishaa"},"content":"* **Contact**: An entity representing a client. It contains personal details such as name, phone number, email and address. Contact can also include preferences like seller or buyer ranges and associated properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"triishaa"},"content":"* **Property**: A real estate asset associated to a contact. Each property has details such as name, address, price, number of rooms and optional tags(property type/condition/ownership type, etc.)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"triishaa"},"content":"* **Index**: A numerical identifier used to refer to a specific contact or property in the system. These are used for operations like deletion, updating, or viewing details.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"triishaa"},"content":"* **Tag**: A label used to categorize contacts or properties. Examples can include \"Investor\", \"Luxury\", \"Renter\", etc. They are used to provide additional context and for easy filtering and searching.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"triishaa"},"content":"* **Seller Preferred Range (SPR)**: A price range that indicates the seller\u0027s preferred selling range for properties. Used for matching potential sellers with buyers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"triishaa"},"content":"* **Buyer Preferred Range (BPR)**: A price range that indicates the buyer\u0027s preferred range for purchasing properties. Helps in identifying properties that match a buyer\u0027s preference.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"triishaa"},"content":"* **Keyword**: A term or phrase used to search for specific contacts or properties. They can match any stored attribute such as name, address, tag, etc.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"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","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"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","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"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","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"Potatoad88":110,"OrangeCatLoves":4,"triishaa":7,"ITZXITZX":2,"-":378}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"# NUStates User Guide","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"NUStates is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) for Real Estate Agents to organize and categorize client and seller contacts, schedule appointments, contact clients about new property listings that match their client\u0027s preferences, and be notified to contact clients on key dates or at regular intervals.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"It has the benefits of a Graphical User Interface (GUI). If you can type fast, NUStates can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"1. Download the latest `.jar` file from [here](https://github.com/nus-cs2103-AY2425S1/forum/releases).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"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","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":173,"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","isFullCredit":false},{"lineNumber":174,"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","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"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","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"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","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"xqtann":5,"-":202}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eNUStates\u003c/a\u003e","lastModifiedDate":"2024-09-19","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ITZXITZX"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F10-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"ITZXITZX":1,"-":66}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ITZXITZX"},"content":"# NUStates","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ITZXITZX"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F10-3/tp/actions)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ITZXITZX"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ITZXITZX"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp/graph/badge.svg?token\u003dY7MHE94H5W)](https://codecov.io/gh/AY2425S1-CS2103T-F10-3/tp)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"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","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"ITZXITZX":4,"-":19}},{"path":"docs/team/dylan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":" title: \"Dylan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Potatoad88":1,"-":45}},{"path":"docs/team/orangecatloves.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":" title: \"Low Wei Bin\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"* **Project management**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" * User Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"* **Community**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"* **Tools**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":46}},{"path":"docs/team/xinquan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"layout: page","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"---","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xqtann"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"* **Project management**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xqtann"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xqtann"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xqtann"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xqtann"},"content":" * User Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xqtann"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xqtann"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xqtann"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":"* **Community**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xqtann"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xqtann"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xqtann"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":"* **Tools**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xqtann"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"xqtann":46}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyToBuyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Potatoad88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BUYING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Potatoad88"},"content":"import java.util.List;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Potatoad88"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Potatoad88"},"content":" * Adds a property to the list of properties to buy for a specific contact.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Potatoad88"},"content":"public class AddPropertyToBuyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Potatoad88"},"content":" public static final String COMMAND_WORD \u003d \"addBuy\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Potatoad88"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the list of properties to buy\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Potatoad88"},"content":" + \" for this specific person. \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Potatoad88"},"content":" + \"Parameters: INDEX (Must be a positive integer)\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_HOUSING_TYPE + \"[HOUSING_TYPE]\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":" + PREFIX_BUYING_PRICE + \"[SELLING_PRICE]\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_POSTAL_CODE + \"[POSTAL_CODE]\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_UNIT_NUMBER + \"[UNIT_NUMBER]\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_TAG + \"[TAG]...\\n\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Potatoad88"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" + \"1 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":" + PREFIX_HOUSING_TYPE + \"c \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":" + PREFIX_BUYING_PRICE + \"1650000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_POSTAL_CODE + \"567510 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_UNIT_NUMBER + \"10-65 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_TAG + \"Extremely spacious \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Potatoad88"},"content":" + PREFIX_TAG + \"Near MRT\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Potatoad88"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"This property already exists \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":" + \"in the list of properties to buy\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" private final Index index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":" private final Property propertyToBuyToBeAdded;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":" * @param property property to be added to the list of properties to buy","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" public AddPropertyToBuyCommand(Index index, Property property) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" this.propertyToBuyToBeAdded \u003d property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Potatoad88"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Potatoad88"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Potatoad88"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Potatoad88"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Potatoad88"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Potatoad88"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Potatoad88"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Potatoad88"},"content":" personToEdit.containsBuyProperty(propertyToBuyToBeAdded);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Potatoad88"},"content":" if (personToEdit.containsBuyProperty(propertyToBuyToBeAdded)) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Potatoad88"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Potatoad88"},"content":" } else {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Potatoad88"},"content":" personToEdit.addBuyProperty(propertyToBuyToBeAdded);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Potatoad88"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Potatoad88"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, propertyToBuyToBeAdded));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Potatoad88"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Potatoad88"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Potatoad88"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Potatoad88"},"content":" || (other instanceof AddPropertyToBuyCommand // instanceof handles nulls","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Potatoad88"},"content":" \u0026\u0026 propertyToBuyToBeAdded.equals(((AddPropertyToBuyCommand) other).propertyToBuyToBeAdded));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Potatoad88"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"xqtann":5,"Potatoad88":83}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyToSellCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.List;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" * Adds a property to the list of properties to sell for a specific contact.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellCommand extends Command {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String COMMAND_WORD \u003d \"addSell\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the list of properties to sell \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" + \"for this specific person. \\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" + \"Parameters: INDEX (Must be a positive integer) \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"[HOUSING_TYPE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"[SELLING_PRICE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"[POSTAL_CODE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"[UNIT_NUMBER] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"[TAG]...\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" + \"1 \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"c \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"165000000 \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"567510 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-65 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"Extremely spacious \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"Near MRT\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED \u003d \"This command (addSell) is not implemented yet\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"This property already exists \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" + \"in the list of properties to sell\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" private final Property propertyToSellToBeAdded;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index personIndex;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" * Creates an AddPropertyToSellCommand to add the specified {@code Property}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" public AddPropertyToSellCommand(Index personIndex, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" this.personIndex \u003d personIndex;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" this.propertyToSellToBeAdded \u003d property;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" if (personIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" Person personToEdit \u003d lastShownList.get(personIndex.getZeroBased());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" if (personToEdit.containsSellProperty(propertyToSellToBeAdded)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" } else {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" personToEdit.addSellProperty(propertyToSellToBeAdded);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, propertyToSellToBeAdded));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof AddPropertyToSellCommand // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 propertyToSellToBeAdded.equals(((AddPropertyToSellCommand) other).propertyToSellToBeAdded));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":84}},{"path":"src/main/java/seedu/address/logic/commands/FindNameCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindNameCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" public static final String COMMAND_WORD \u003d \"findn\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" public FindNameCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" if (!(other instanceof FindNameCommand)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"triishaa"},"content":" FindNameCommand otherFindNameCommand \u003d (FindNameCommand) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"triishaa"},"content":" return predicate.equals(otherFindNameCommand.predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"triishaa":6,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/FindPhoneNumberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" public static final String COMMAND_WORD \u003d \"findp\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds the person whose contact matches any of \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" + \"Example: \" + COMMAND_WORD + \" 12345678 98765432\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":" private final PhoneNumberContainsKeywordPredicate predicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" public FindPhoneNumberCommand(PhoneNumberContainsKeywordPredicate predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPhoneNumberList().size()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" if (!(other instanceof FindPhoneNumberCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand otherFindPhoneNumberCommand \u003d (FindPhoneNumberCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"triishaa"},"content":" return predicate.equals(otherFindPhoneNumberCommand.predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"triishaa":12,"-":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, null, null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Potatoad88":1,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyToBuyParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BUYING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Apartment;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Bto;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Condo;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Hdb;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.HousingType;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.OtherProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xqtann"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":" * Parses input arguments and creates a new AddPropertyToBuyCommand object","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xqtann"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xqtann"},"content":"public class AddPropertyToBuyParser implements Parser\u003cAddPropertyToBuyCommand\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xqtann"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xqtann"},"content":" * Parses the given {@code String} of arguments in the context of the AddPropertyToBuyCommand","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" * and returns an AddPropertyToBuyCommand object for execution.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xqtann"},"content":" public AddPropertyToBuyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xqtann"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_HOUSING_TYPE, PREFIX_BUYING_PRICE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xqtann"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER, PREFIX_TAG);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_HOUSING_TYPE, PREFIX_BUYING_PRICE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xqtann"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":" AddPropertyToBuyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":" Index index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":" try {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xqtann"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xqtann"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":" AddPropertyToBuyCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xqtann"},"content":" // Create a new Property object here and pass it to AddPropertyToBuyCommand(Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xqtann"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_HOUSING_TYPE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xqtann"},"content":" PREFIX_BUYING_PRICE, PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xqtann"},"content":" HousingType housingType \u003d ParserUtil.parseHousingType(argMultimap.getValue(PREFIX_HOUSING_TYPE).get());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xqtann"},"content":" Price buyingPrice \u003d ParserUtil.parseBuyingPrice(argMultimap.getValue(PREFIX_BUYING_PRICE).get());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xqtann"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTAL_CODE).get());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xqtann"},"content":" UnitNumber unitNumber \u003d ParserUtil.parseUnitNumber(argMultimap.getValue(PREFIX_UNIT_NUMBER).get());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xqtann"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xqtann"},"content":" Property property \u003d getSpecificPropertyObject(housingType, buyingPrice, postalCode, unitNumber, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xqtann"},"content":" return new AddPropertyToBuyCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xqtann"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xqtann"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xqtann"},"content":" private static Property getSpecificPropertyObject(HousingType housingType, Price buyingPrice,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xqtann"},"content":" PostalCode postalCode, UnitNumber unitNumber, Set\u003cTag\u003e tagList) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xqtann"},"content":" return switch (housingType) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xqtann"},"content":" case CONDO -\u003e new Condo(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xqtann"},"content":" case HDB -\u003e new Hdb(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xqtann"},"content":" case APARTMENT -\u003e new Apartment(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xqtann"},"content":" case BTO -\u003e new Bto(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xqtann"},"content":" case OTHERS -\u003e new OtherProperty(postalCode, unitNumber, buyingPrice, tagList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xqtann"},"content":" default -\u003e null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xqtann"},"content":" };","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xqtann"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"xqtann":86}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyToSellParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.AddPropertyToSellCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Apartment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Bto;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Condo;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Hdb;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.HousingType;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.OtherProperty;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses input arguments and creates a new AddPropertyToSellCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellParser implements Parser\u003cAddPropertyToSellCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses the given {@code String} of arguments in the context of the AddPropertyToSellCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" * and returns an AddPropertyToSellCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" public AddPropertyToSellCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_HOUSING_TYPE, PREFIX_SELLING_PRICE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER, PREFIX_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" Index index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" try {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" /*throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand.MESSAGE_USAGE), pe);*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Removed this condition, not sure what it means :/","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" // || !argMultimap.getPreamble().isEmpty()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_HOUSING_TYPE, PREFIX_SELLING_PRICE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a new Property object here and pass it to AddPropertyToSellCommand(Property property);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_HOUSING_TYPE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" PREFIX_SELLING_PRICE, PREFIX_POSTAL_CODE, PREFIX_UNIT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" HousingType housingType \u003d ParserUtil.parseHousingType(argMultimap.getValue(PREFIX_HOUSING_TYPE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" Price sellingPrice \u003d ParserUtil.parseSellingPrice(argMultimap.getValue(PREFIX_SELLING_PRICE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTAL_CODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d ParserUtil.parseUnitNumber(argMultimap.getValue(PREFIX_UNIT_NUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d getSpecificPropertyObject(housingType, sellingPrice, postalCode, unitNumber, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" return new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" private static Property getSpecificPropertyObject(HousingType housingType, Price sellingPrice,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode, UnitNumber unitNumber, Set\u003cTag\u003e tagList) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" return switch (housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" case CONDO -\u003e new Condo(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" case HDB -\u003e new Hdb(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" case APARTMENT -\u003e new Apartment(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" case BTO -\u003e new Bto(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" case OTHERS -\u003e new OtherProperty(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" default -\u003e null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" };","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":91}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.AddPropertyToSellCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindPhoneNumberCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"triishaa"},"content":" case FindNameCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"triishaa"},"content":" return new FindNameCommandParser().parse(arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"triishaa"},"content":" case FindPhoneNumberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"triishaa"},"content":" return new FindPhoneNumberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" case AddPropertyToSellCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" return new AddPropertyToSellParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xqtann"},"content":" case AddPropertyToBuyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xqtann"},"content":" return new AddPropertyToBuyParser().parse(arguments);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"xqtann":4,"OrangeCatLoves":4,"triishaa":7,"-":82}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_HOUSING_TYPE \u003d new Prefix(\"ht/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_SELLING_PRICE \u003d new Prefix(\"sp/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_BUYING_PRICE \u003d new Prefix(\"bp/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_POSTAL_CODE \u003d new Prefix(\"pc/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ITZXITZX"},"content":" public static final Prefix PREFIX_UNIT_NUMBER \u003d new Prefix(\"un/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"ITZXITZX":5,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/FindNameCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":" * Parses input arguments and creates a new FindNameCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindNameCommandParser implements Parser\u003cFindNameCommand\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" * Parses the given {@code String} of arguments in the context of the FindNameCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" * and returns a FindNameCommand object for execution.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" public FindNameCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindNameCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" return new FindNameCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"triishaa":8,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/FindPhoneNumberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindPhoneNumberCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":" * Parses input arguments and creates a new FindContactCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommandParser implements Parser\u003cFindPhoneNumberCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" * Parses the given {@code String} of arguments in the context of the FindPhoneNumberCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" * and returns a FindPhoneNumberCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" public FindPhoneNumberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindPhoneNumberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" String[] phoneNumberKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" return new FindPhoneNumberCommand(new PhoneNumberContainsKeywordPredicate(Arrays.asList(phoneNumberKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"triishaa":10,"-":23}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.HousingType;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String housingType} into a {@code HousingType}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code housingType} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" public static HousingType parseHousingType(String housingType) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(housingType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedHousingType \u003d housingType.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" if (!HousingType.isValidHousingType(trimmedHousingType)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(\"Housing type is not a non-zero unsigned integer.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" return HousingType.getHousingType(trimmedHousingType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String sellingPrice} into a {@code SellingPrice}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code sellingPrice} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"OrangeCatLoves"},"content":" public static Price parseSellingPrice(String sellingPrice) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(sellingPrice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedSellingPrice \u003d sellingPrice.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"OrangeCatLoves"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedSellingPrice)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"OrangeCatLoves"},"content":" throw new ParseException(\"Selling price is not a non-zero unsigned integer.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"OrangeCatLoves"},"content":" return new Price(trimmedSellingPrice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"xqtann"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"xqtann"},"content":" * Parses a {@code String buyingPrice} into a {@code BuyingPrice}.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"xqtann"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"xqtann"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"xqtann"},"content":" * @throws ParseException if the given {@code buyingPrice} is invalid.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"xqtann"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"xqtann"},"content":" public static Price parseBuyingPrice(String buyingPrice) throws ParseException {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"xqtann"},"content":" requireNonNull(buyingPrice);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"xqtann"},"content":" String trimmedBuyingPrice \u003d buyingPrice.trim();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"xqtann"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedBuyingPrice)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"xqtann"},"content":" throw new ParseException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"xqtann"},"content":" return new Price(trimmedBuyingPrice);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String postalCode} into a {@code PostalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"OrangeCatLoves"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"OrangeCatLoves"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"xqtann"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"OrangeCatLoves"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"OrangeCatLoves"},"content":" * Parses a {@code String unitNumber} into a {@code UnitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"OrangeCatLoves"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"OrangeCatLoves"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"OrangeCatLoves"},"content":" public static UnitNumber parseUnitNumber(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"OrangeCatLoves"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"OrangeCatLoves"},"content":" if (!UnitNumber.isValidUnitNumber(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"xqtann"},"content":" throw new ParseException(UnitNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"OrangeCatLoves"},"content":" return new UnitNumber(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"xqtann":17,"OrangeCatLoves":62,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean hasSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" // There\u0027s no get method for ObservableList, so we can\u0027t get the property at the index","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" //Person specificPerson \u003d persons.get(index.getZeroBased());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Property p) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" //properties.add(p);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":97,"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","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":16,"-":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" boolean hasSellProperty(Index index, Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" * Adds the given property to the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" * {@code property} must not already exist in the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" void addSellProperty(Index index, Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"triishaa"},"content":" /** Returns an unmodifiable view of filtered person based on their phone number */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"triishaa"},"content":" ObservableList\u003cPerson\u003e getFilteredPhoneNumberList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":13,"triishaa":3,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean hasSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" return addressBook.hasSellProperty(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" addressBook.addSellProperty(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"triishaa"},"content":" public ObservableList\u003cPerson\u003e getFilteredPhoneNumberList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"triishaa"},"content":" return filteredPersons;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":16,"triishaa":4,"-":148}},{"path":"src/main/java/seedu/address/model/person/Apartment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents an Apartment in the address book. A subclass of Property class","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Apartment extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Apartment names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code Apartment}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid apartment postalCode.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" * @param unitNumber A valid unit number.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" * @param price A valid price.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" public Apartment(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherApartment) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherApartment) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherApartment)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherApartment instanceof Apartment)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":43}},{"path":"src/main/java/seedu/address/model/person/Bto.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a BTO in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Bto extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"BTO names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code BTO}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid BTO postalCode.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" * @param unitNumber A valid unit number.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" * @param price A valid price.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" public Bto(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherBto) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherBto)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherBto instanceof Bto)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":41}},{"path":"src/main/java/seedu/address/model/person/Condo.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a Condo in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Condo extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Condo names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public Condo(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherCondo) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherCondo) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherCondo)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherCondo instanceof Condo)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":37}},{"path":"src/main/java/seedu/address/model/person/Hdb.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents an HDB in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class Hdb extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"HDB names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public Hdb(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherHdb) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherHdb) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherHdb)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherHdb instanceof Hdb)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":37}},{"path":"src/main/java/seedu/address/model/person/HousingType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents the type of housing that a person resides in.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"public enum HousingType {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":" CONDO, HDB, APARTMENT, BTO, OTHERS, INVALID_HOUSING_TYPE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" * Checks if the given housing type is valid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" * @param housingType The housing type to be checked.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * @return True if the housing type is valid, false otherwise.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidHousingType(String housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" return housingType.equals(\"a\") || housingType.equals(\"c\") || housingType.equals(\"b\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" || housingType.equals(\"h\") || housingType.equals(\"o\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns the HousingType enum corresponding to the given housing type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" * @param housingType The housing type to be converted.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" * @return The HousingType enum corresponding to the given housing type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public static HousingType getHousingType(String housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" return switch (housingType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" case \"a\" -\u003e APARTMENT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" case \"c\" -\u003e CONDO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" case \"b\" -\u003e BTO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" case \"h\" -\u003e HDB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" case \"o\" -\u003e OTHERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" default -\u003e INVALID_HOUSING_TYPE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" };","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":36}},{"path":"src/main/java/seedu/address/model/person/OtherProperty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents an Other Property in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"public class OtherProperty extends Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Other Property names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" public OtherProperty(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" super(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object otherProperty) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" if (this \u003d\u003d otherProperty) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" if (!super.equals(otherProperty)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(otherProperty instanceof OtherProperty)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return super.toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.List;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" // Property details","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" private List\u003cProperty\u003e sellingProperties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" private List\u003cProperty\u003e buyingProperties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":" * Constructor for when there are properties to be added.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, List\u003cProperty\u003e sellingProperties,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" List\u003cProperty\u003e buyingProperties) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" this.sellingProperties \u003d sellingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" this.buyingProperties \u003d buyingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" public List\u003cProperty\u003e getListOfSellingProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" return sellingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" public List\u003cProperty\u003e getListOfBuyingProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" return buyingProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Potatoad88"},"content":" * Returns true if property is in the list of properties to buy.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Potatoad88"},"content":" * @param property Property to check","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Potatoad88"},"content":" * @return boolean","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Potatoad88"},"content":" public boolean containsBuyProperty(Property property) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Potatoad88"},"content":" return buyingProperties.contains(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Potatoad88"},"content":" * Adds a property to the list of properties to buy.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Potatoad88"},"content":" * @param property Property to add","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Potatoad88"},"content":" public void addBuyProperty(Property property) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Potatoad88"},"content":" buyingProperties.add(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if property is in the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" * @param property Property to check","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" * @return boolean","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean containsSellProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" return sellingProperties.contains(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" * Adds a property to the list of properties to sell.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" * @param property Property to add","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" sellingProperties.add(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Potatoad88":35,"OrangeCatLoves":28,"-":117}},{"path":"src/main/java/seedu/address/model/person/PhoneNumberContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"triishaa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"triishaa"},"content":"import java.util.List;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"triishaa"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"triishaa"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"triishaa"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":"public class PhoneNumberContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"triishaa"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"triishaa"},"content":" public PhoneNumberContainsKeywordPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"triishaa"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getPhone().value, keyword));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" return true;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"triishaa"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" if (!(other instanceof PhoneNumberContainsKeywordPredicate)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"triishaa"},"content":" return false;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate otherPhoneNumberContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"triishaa"},"content":" (PhoneNumberContainsKeywordPredicate) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"triishaa"},"content":" return keywords.equals(otherPhoneNumberContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"triishaa"},"content":" public String toString() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"triishaa"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"triishaa"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"triishaa":45}},{"path":"src/main/java/seedu/address/model/person/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a PostalCode of a Property in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Postal codes should only contain numbers and be 6 digits long\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid postal code.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" this.value \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a given string is a valid postal code.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidPostalCode(String postalCode) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof PostalCode // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 value.equals(((PostalCode) other).value)); // state check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":44}},{"path":"src/main/java/seedu/address/model/person/Price.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a Price of a Property in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"public class Price {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Prices should be numeric\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d+\"; // Checks if the price is numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code Price}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * @param price A valid price.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" public Price(String price) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" this.value \u003d price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a given string is a valid price.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidPrice(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof Price // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 value.equals(((Price) other).value)); // state check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":44}},{"path":"src/main/java/seedu/address/model/person/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"public abstract class Property {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Property names should be alphanumeric\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" private final UnitNumber unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private final Price price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code Property}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" * @param postalCode A valid property name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public Property(PostalCode postalCode, UnitNumber unitNumber, Price price, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" this.price \u003d price;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" this.tags \u003d tags;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" public UnitNumber getUnitNumber() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" return unitNumber;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" public Price getPrice() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" return price;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if the property is the same as the other property.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 this.getClass().equals(otherProperty.getClass())","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 otherProperty.getUnitNumber().equals(getUnitNumber());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode.equals(otherProperty.postalCode) \u0026\u0026 unitNumber.equals(otherProperty.unitNumber);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" return postalCode.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" return \"[\" + postalCode + \"]\" + \" Unit Number: \" + unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":92}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":" * persons uses Person#isSamePerson(Person) for equality to ensure that the person being added or updated is","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":" * to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"triishaa":2,"-":147}},{"path":"src/main/java/seedu/address/model/person/UnitNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":" * Represents a UnitNumber of a Property in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"public class UnitNumber {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Unit numbers should be alphanumeric\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d+-\\\\d+\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" * Constructs a {@code UnitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" * @param unitNumber A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" public UnitNumber(String unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" this.value \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public static boolean isValidUnitNumber(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" || (other instanceof UnitNumber // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" \u0026\u0026 value.equals(((UnitNumber) other).value)); // state check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":46}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} ]+\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"-":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" /*@JsonCreator","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"sellProperties\") List\u003cJsonAdaptedProperty\u003e sellProperties,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" @JsonProperty(\"buyProperties\") List\u003cJsonAdaptedProperty\u003e buyProperties) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":14,"-":109}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"triishaa"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"triishaa"},"content":" public ObservableList\u003cPerson\u003e getFilteredPhoneNumberList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"triishaa"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"OrangeCatLoves"},"content":" public void addSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"OrangeCatLoves"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"OrangeCatLoves"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"OrangeCatLoves"},"content":" public boolean hasSellProperty(Index index, Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"OrangeCatLoves"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":10,"triishaa":4,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyToBuyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Potatoad88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Potatoad88"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Potatoad88"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Potatoad88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Potatoad88"},"content":"public class AddPropertyToBuyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Potatoad88"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Potatoad88"},"content":" private final Property property \u003d new PropertyBuilder().build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Potatoad88"},"content":" private final Index indexWithProperty \u003d Index.fromZeroBased(7);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Potatoad88"},"content":" private final Index indexWithoutProperty \u003d Index.fromZeroBased(0);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Potatoad88"},"content":" private final Index invalidIndex \u003d Index.fromZeroBased(1000);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Potatoad88"},"content":" public void execute_validModel_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand command \u003d new AddPropertyToBuyCommand(indexWithoutProperty, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Potatoad88"},"content":" assertEquals(String.format(AddPropertyToBuyCommand.MESSAGE_SUCCESS, property), result.getFeedbackToUser());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Potatoad88"},"content":" public void execute_duplicateProperty_throwsCommandException() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand command \u003d new AddPropertyToBuyCommand(indexWithProperty, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Potatoad88"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand.MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand command \u003d new AddPropertyToBuyCommand(invalidIndex, property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" public void equals() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" Property differentProperty \u003d new PropertyBuilder().withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand commandWithSameValues \u003d new AddPropertyToBuyCommand(indexWithoutProperty,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":" property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand commandWithDifferentProperty \u003d new AddPropertyToBuyCommand(indexWithoutProperty,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" differentProperty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" AddPropertyToBuyCommand commandWithDifferentIndex \u003d new AddPropertyToBuyCommand(indexWithProperty, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Potatoad88"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Potatoad88"},"content":" assertEquals(commandWithSameValues, commandWithSameValues);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Potatoad88"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Potatoad88"},"content":" assertEquals(commandWithSameValues, new AddPropertyToBuyCommand(indexWithoutProperty, property));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Potatoad88"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Potatoad88"},"content":" assertNotEquals(commandWithSameValues, 1);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Potatoad88"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Potatoad88"},"content":" assertNotEquals(commandWithSameValues, null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Potatoad88"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Potatoad88"},"content":" assertNotEquals(commandWithSameValues, commandWithDifferentProperty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Potatoad88"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Potatoad88":76}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyToSellCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index index \u003d Index.fromZeroBased(7);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private final Property property \u003d new PropertyBuilder().build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index indexWithProperty \u003d Index.fromZeroBased(7);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index indexWithoutProperty \u003d Index.fromZeroBased(0);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private final Index invalidIndex \u003d Index.fromZeroBased(1000);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" public void constructor_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPropertyToSellCommand(index, null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" public void execute_validModel_success() throws Exception {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" //assertEquals(AddPropertyToSellCommand.MESSAGE_SUCCESS, result.getFeedbackToUser());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" public void execute_duplicateProperty_throwsCommandException() throws Exception {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d new AddPropertyToSellCommand(indexWithProperty, property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" /*Assertions.assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand.MESSAGE_DUPLICATE_PROPERTY);*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d new AddPropertyToSellCommand(invalidIndex, property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" Assertions.assertThrows(CommandException.class, () -\u003e command.execute(model),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand addPropertyToSellCommand \u003d new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(addPropertyToSellCommand.equals(addPropertyToSellCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand addPropertyToSellCommandCopy \u003d new AddPropertyToSellCommand(index, property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(addPropertyToSellCommand.equals(addPropertyToSellCommandCopy));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(addPropertyToSellCommand.equals(1));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(addPropertyToSellCommand.equals(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" Property differentProperty \u003d new PropertyBuilder().withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand addDifferentPropertyCommand \u003d new AddPropertyToSellCommand(index, differentProperty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(addPropertyToSellCommand.equals(addDifferentPropertyCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BUYING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" public static final String VALID_HOUSING_TYPE_HDB \u003d \"h\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":" public static final String VALID_HOUSING_TYPE_CONDO \u003d \"c\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":" public static final String VALID_BUYING_PRICE_1650000 \u003d \"1650000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xqtann"},"content":" public static final String VALID_BUYING_PRICE_1900000 \u003d \"1900000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":" public static final String VALID_SELLING_PRICE_1500000 \u003d \"1500000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xqtann"},"content":" public static final String VALID_SELLING_PRICE_2000000 \u003d \"2000000\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":" public static final String VALID_POSTAL_CODE_567510 \u003d \"567510\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xqtann"},"content":" public static final String VALID_POSTAL_CODE_582090 \u003d \"582090\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xqtann"},"content":" public static final String VALID_UNIT_NUMBER_10_65 \u003d \"10-65\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":" public static final String VALID_UNIT_NUMBER_03_11 \u003d \"03-11\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":" public static final String VALID_TAG_SPACIOUS \u003d \"spacious\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xqtann"},"content":" public static final String VALID_TAG_NEAR_MRT \u003d \"near MRT\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xqtann"},"content":" public static final String HOUSING_TYPE_DESC_HDB \u003d \" \" + PREFIX_HOUSING_TYPE + VALID_HOUSING_TYPE_HDB;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xqtann"},"content":" public static final String HOUSING_TYPE_DESC_CONDO \u003d \" \" + PREFIX_HOUSING_TYPE + VALID_HOUSING_TYPE_CONDO;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":" public static final String BUYING_PRICE_DESC_1650000 \u003d \" \" + PREFIX_BUYING_PRICE + VALID_BUYING_PRICE_1650000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xqtann"},"content":" public static final String BUYING_PRICE_DESC_1900000 \u003d \" \" + PREFIX_BUYING_PRICE + VALID_BUYING_PRICE_1900000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xqtann"},"content":" public static final String SELLING_PRICE_DESC_1500000 \u003d \" \" + PREFIX_SELLING_PRICE + VALID_SELLING_PRICE_1500000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xqtann"},"content":" public static final String SELLING_PRICE_DESC_2000000 \u003d \" \" + PREFIX_SELLING_PRICE + VALID_SELLING_PRICE_2000000;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xqtann"},"content":" public static final String POSTAL_CODE_DESC_567510 \u003d \" \" + PREFIX_POSTAL_CODE + VALID_POSTAL_CODE_567510;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xqtann"},"content":" public static final String POSTAL_CODE_DESC_582090 \u003d \" \" + PREFIX_POSTAL_CODE + VALID_POSTAL_CODE_582090;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xqtann"},"content":" public static final String UNIT_NUMBER_DESC_10_65 \u003d \" \" + PREFIX_UNIT_NUMBER + VALID_UNIT_NUMBER_10_65;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xqtann"},"content":" public static final String UNIT_NUMBER_DESC_03_11 \u003d \" \" + PREFIX_UNIT_NUMBER + VALID_UNIT_NUMBER_03_11;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xqtann"},"content":" public static final String TAG_DESC_SPACIOUS \u003d \" \" + PREFIX_TAG + VALID_TAG_SPACIOUS;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xqtann"},"content":" public static final String TAG_DESC_NEAR_MRT \u003d \" \" + PREFIX_TAG + VALID_TAG_NEAR_MRT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_HOUSING_TYPE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_HOUSING_TYPE + \"x\"; // \u0027x\u0027 not a valid housing type","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_BUYING_PRICE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_BUYING_PRICE + \"1.65million\"; // \u0027million\u0027 not allowed in prices","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_SELLING_PRICE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_SELLING_PRICE + \"1.65M\"; // \u0027M\u0027 not allowed in prices","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_POSTAL_CODE_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_POSTAL_CODE + \"1234567\"; // 7 digits not allowed in postal code","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xqtann"},"content":" public static final String INVALID_UNIT_NUMBER_DESC \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xqtann"},"content":" \" \" + PREFIX_UNIT_NUMBER + \"10-65-01\"; // \u002701\u0027 not allowed in unit number","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xqtann"},"content":" public static final String PREAMBLE_INDEX \u003d \"1\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":155,"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","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"xqtann":40,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/FindNameCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":" * Contains integration tests (interaction with the Model) for {@code FindNameCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":"public class FindNameCommandTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"triishaa"},"content":" FindNameCommand findFirstCommand \u003d new FindNameCommand(firstPredicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"triishaa"},"content":" FindNameCommand findSecondCommand \u003d new FindNameCommand(secondPredicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" FindNameCommand findFirstCommandCopy \u003d new FindNameCommand(firstPredicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"triishaa"},"content":" FindNameCommand command \u003d new FindNameCommand(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"triishaa"},"content":" FindNameCommand command \u003d new FindNameCommand(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"triishaa"},"content":" FindNameCommand findNameCommand \u003d new FindNameCommand(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"triishaa"},"content":" String expected \u003d FindNameCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"triishaa"},"content":" assertEquals(expected, findNameCommand.toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"triishaa":10,"-":81}},{"path":"src/test/java/seedu/address/logic/commands/FindPhoneNumberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"triishaa"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"triishaa"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"triishaa"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"triishaa"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"triishaa"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":" * Contains integration tests (interaction with the Model) for {@code FindPhoneNumberCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"triishaa"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"triishaa"},"content":" new PhoneNumberContainsKeywordPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"triishaa"},"content":" new PhoneNumberContainsKeywordPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findFirstCommand \u003d new FindPhoneNumberCommand(firstPredicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findSecondCommand \u003d new FindPhoneNumberCommand(secondPredicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"triishaa"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"triishaa"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"triishaa"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findFirstCommandCopy \u003d new FindPhoneNumberCommand(firstPredicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"triishaa"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"triishaa"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"triishaa"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"triishaa"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"triishaa"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"triishaa"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"triishaa"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"triishaa"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"triishaa"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand command \u003d new FindPhoneNumberCommand(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"triishaa"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"triishaa"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"triishaa"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"triishaa"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"triishaa"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate predicate \u003d preparePredicate(\"95352563 9482224 9482427\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand command \u003d new FindPhoneNumberCommand(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"triishaa"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"triishaa"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"triishaa"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"triishaa"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"triishaa"},"content":" PhoneNumberContainsKeywordPredicate predicate \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"triishaa"},"content":" new PhoneNumberContainsKeywordPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand findPhoneNumberCommand \u003d new FindPhoneNumberCommand(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"triishaa"},"content":" String expected \u003d FindPhoneNumberCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"triishaa"},"content":" assertEquals(expected, findPhoneNumberCommand.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"triishaa"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"triishaa"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"triishaa"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"triishaa"},"content":" private PhoneNumberContainsKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"triishaa"},"content":" return new PhoneNumberContainsKeywordPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"triishaa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"triishaa":92}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyToBuyParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xqtann"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BUYING_PRICE_DESC_1650000;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOUSING_TYPE_DESC_HDB;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_BUYING_PRICE_DESC;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTAL_CODE_DESC;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_NUMBER_DESC;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTAL_CODE_DESC_567510;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_INDEX;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NEAR_MRT;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_NUMBER_DESC_03_11;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xqtann"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xqtann"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xqtann"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Hdb;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xqtann"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xqtann"},"content":"public class AddPropertyToBuyParserTest {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xqtann"},"content":" private AddPropertyToBuyParser parser \u003d new AddPropertyToBuyParser();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xqtann"},"content":" public void parse_allFieldsPresent_success() throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xqtann"},"content":" Property expectedProperty \u003d new Hdb(new PostalCode(\"567510\"), new UnitNumber(\"03-11\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xqtann"},"content":" new Price(\"1650000\"), SampleDataUtil.getTagSet(\"near MRT\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":" assertParseSuccess(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xqtann"},"content":" new AddPropertyToBuyCommand(Index.fromOneBased(1), expectedProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xqtann"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xqtann"},"content":" // zero tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xqtann"},"content":" Property expectedProperty \u003d new PropertyBuilder().withPostalCode(\"567510\").withUnitNumber(\"03-11\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xqtann"},"content":" .withPrice(\"1650000\").build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xqtann"},"content":" assertParseSuccess(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xqtann"},"content":" new AddPropertyToBuyCommand(Index.fromOneBased(1), expectedProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xqtann"},"content":" public void parse_compulsoryFieldsMissing_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xqtann"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyToBuyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xqtann"},"content":" // missing postal code prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xqtann"},"content":" + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xqtann"},"content":" // missing unit number prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xqtann"},"content":" // missing buying price prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + POSTAL_CODE_DESC_567510","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xqtann"},"content":" + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xqtann"},"content":" // missing housing type prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + BUYING_PRICE_DESC_1650000 + POSTAL_CODE_DESC_567510","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xqtann"},"content":" + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xqtann"},"content":" public void parse_repeatedNonTagPrefix_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicatePc \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"pc/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicateHt \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"ht/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicateBp \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"bp/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xqtann"},"content":" String expectedMessageDuplicateUn \u003d Messages.getErrorMessageForDuplicatePrefixes(new Prefix(\"un/\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xqtann"},"content":" // repeated postal code prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicatePc);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xqtann"},"content":" // repeated unit number prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicateUn);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xqtann"},"content":" // repeated buying price prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xqtann"},"content":" + BUYING_PRICE_DESC_1650000 + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicateBp);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xqtann"},"content":" // repeated housing type prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + HOUSING_TYPE_DESC_HDB","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xqtann"},"content":" + BUYING_PRICE_DESC_1650000 + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xqtann"},"content":" + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xqtann"},"content":" expectedMessageDuplicateHt);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xqtann"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xqtann"},"content":" // invalid postal code","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xqtann"},"content":" + INVALID_POSTAL_CODE_DESC + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xqtann"},"content":" PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xqtann"},"content":" // invalid unit number","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + INVALID_UNIT_NUMBER_DESC + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xqtann"},"content":" UnitNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xqtann"},"content":" // invalid buying price","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xqtann"},"content":" assertParseFailure(parser, PREAMBLE_INDEX + HOUSING_TYPE_DESC_HDB + INVALID_BUYING_PRICE_DESC","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xqtann"},"content":" + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xqtann"},"content":" Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xqtann"},"content":" // invalid housing type","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xqtann"},"content":" // assertParseFailure(parser, PREAMBLE_INDEX + INVALID_HOUSING_TYPE_DESC + BUYING_PRICE_DESC_1650000","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xqtann"},"content":" // + POSTAL_CODE_DESC_567510 + UNIT_NUMBER_DESC_03_11 + TAG_DESC_NEAR_MRT, Hdb.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xqtann"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"xqtann":128}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyToSellParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOUSING_TYPE;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTAL_CODE;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELLING_PRICE;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNIT_NUMBER;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class AddPropertyToSellParserTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private AddPropertyToSellParser parser \u003d new AddPropertyToSellParser();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" parser \u003d new AddPropertyToSellParser();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_missingSellingPrice_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" // Given a user input missing the selling price","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d \"1 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \" apartment \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \" 123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \" 10-01 \";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" // When parsing, then a ParseException should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidSellingPrice_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" // Given a user input with an invalid selling price","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d \"1 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \" apartment \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \" notANumber \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \" 123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \" 10-01 \";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" // When parsing, then a ParseException should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_missingHousingType_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidHousingType_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"InvalidType \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidPostalCode_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"Condo \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"invalidPostalCode \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_missingRequiredFields_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidUnitNumber_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"Condo \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"invalidUnitNumber \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_invalidTag_throwsParseException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"Condo \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"InvalidTag\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_allFieldsPresent_success() throws ParseException {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"a \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" // No exception should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" public void parse_allFieldsPresent_success2() throws ParseException {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" String userInput \u003d INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_HOUSING_TYPE + \"a \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_SELLING_PRICE + \"1000000 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_POSTAL_CODE + \"123456 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_UNIT_NUMBER + \"10-01 \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" + PREFIX_TAG + \"New\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" // No exception should be thrown","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":139}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"//import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xqtann"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xqtann"},"content":"import seedu.address.logic.commands.AddPropertyToBuyCommand;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":"//import seedu.address.logic.commands.AddPropertyToSellCommand;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"//import seedu.address.model.person.Condo;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":"/*import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;*/","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xqtann"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xqtann"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"triishaa"},"content":" FindNameCommand command \u003d (FindNameCommand) parser.parseCommand(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"triishaa"},"content":" FindNameCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"triishaa"},"content":" assertEquals(new FindNameCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" public void parseCommand_addSell() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" /*PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" Price sellingPrice \u003d new Price(\"1.65M\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(Arrays.asList(\"Extremely spacious\", \"Near MRT\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d new Condo(postalCode, unitNumber, sellingPrice, tagList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" AddPropertyToSellCommand command \u003d (AddPropertyToSellCommand)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(new AddPropertyToSellCommand(), command);*/","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xqtann"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xqtann"},"content":" public void parseCommand_addBuy() throws Exception {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xqtann"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xqtann"},"content":" Property property \u003d new PropertyBuilder().build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xqtann"},"content":" AddPropertyToBuyCommand command \u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xqtann"},"content":" (AddPropertyToBuyCommand) parser.parseCommand(\"addBuy 1 ht/c bp/1500000 pc/123456 un/10-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xqtann"},"content":" assertEquals(new AddPropertyToBuyCommand(index, property), command);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xqtann"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xqtann"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"xqtann":14,"OrangeCatLoves":21,"triishaa":4,"-":97}},{"path":"src/test/java/seedu/address/logic/parser/FindNameCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindNameCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindNameCommandParserTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" private FindNameCommandParser parser \u003d new FindNameCommandParser();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" FindNameCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" FindNameCommand expectedFindNameCommand \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" new FindNameCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindNameCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindNameCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"triishaa":9,"-":26}},{"path":"src/test/java/seedu/address/logic/parser/FindPhoneNumberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"triishaa"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"triishaa"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"triishaa"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"triishaa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"triishaa"},"content":"import seedu.address.logic.commands.FindPhoneNumberCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"triishaa"},"content":"import seedu.address.model.person.PhoneNumberContainsKeywordPredicate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"triishaa"},"content":"public class FindPhoneNumberCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"triishaa"},"content":" private FindPhoneNumberCommandParser parser \u003d new FindPhoneNumberCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"triishaa"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"triishaa"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"triishaa"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindPhoneNumberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"triishaa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"triishaa"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"triishaa"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"triishaa"},"content":" FindPhoneNumberCommand expectedFindPhoneNumber \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"triishaa"},"content":" new FindPhoneNumberCommand(new PhoneNumberContainsKeywordPredicate(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"triishaa"},"content":" Arrays.asList(\"12345678\", \"987654321\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \"12345678 987654321\", expectedFindPhoneNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"triishaa"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"triishaa"},"content":" assertParseSuccess(parser, \" \\n 12345678 \\n \\t 987654321 \\t\", expectedFindPhoneNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"triishaa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"triishaa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"triishaa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"triishaa":36}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Apartment;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager \u003d new ModelManager();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" public void hasSellProperty_propertyNotAdded_returnsFalse() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a person and add them to the address book","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager.addPerson(person);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a property but don\u0027t add it to the person","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d createTestProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" // Ensure that the property is not in the person\u0027s list (should return false)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(modelManager.hasSellProperty(Index.fromZeroBased(0), property));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" public void hasSellProperty_propertyAdded_returnsTrue() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a person and add them to the address book","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager.addPerson(person);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a property and add it to the person","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Property property \u003d createTestProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" modelManager.addSellProperty(Index.fromZeroBased(0), property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" // Ensure that the property is in the person\u0027s list (should return true)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(1, 1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" // Helper method to create a Property object for testing","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" private Property createTestProperty() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"New\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" return new Apartment(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":52,"-":132}},{"path":"src/test/java/seedu/address/model/person/ApartmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class ApartmentTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Apartment apartment1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Apartment apartment2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" apartment1 \u003d new Apartment(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" apartment2 \u003d new Apartment(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Luxury\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Apartment objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment2 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment3 \u003d new Apartment(new PostalCode(\"654321\"), new UnitNumber(\"20-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"2000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto1 \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"1000000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" // Example: Asserting that two different objects are not equal (should return false)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(bto1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Apartment object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(apartment3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not an Apartment","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(new Object())); // Different type should return false*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, apartment1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, apartment1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, apartment1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), apartment1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(apartment1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentApartment_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(apartment1.equals(apartment2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameApartment_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment sameApartment \u003d new Apartment(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(apartment1.equals(sameApartment));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameApartment_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment sameApartment \u003d new Apartment(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(apartment1.hashCode(), sameApartment.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, apartment1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":142}},{"path":"src/test/java/seedu/address/model/person/BtoTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class BtoTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Bto bto1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Bto bto2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" bto1 \u003d new Bto(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" bto2 \u003d new Bto(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Subsidized\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Bto objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto1 \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto2 \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto3 \u003d new Bto(new PostalCode(\"654321\"), new UnitNumber(\"20-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(bto1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(bto2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Bto object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(bto3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not a Bto","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Apartment)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(apartment)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, bto1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, bto1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, bto1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), bto1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(bto1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentBto_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(bto1.equals(bto2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameBto_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" Bto sameBto \u003d new Bto(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(bto1.equals(sameBto));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameBto_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" Bto sameBto \u003d new Bto(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(bto1.hashCode(), sameBto.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, bto1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":142}},{"path":"src/test/java/seedu/address/model/person/CondoTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"public class CondoTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" public void constructor_validInputs_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode, condo.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber, condo.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price, condo.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(tags, condo.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Luxury\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Condo objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo1 \u003d new Condo(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo2 \u003d new Condo(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo3 \u003d new Condo(new PostalCode(\"654321\"), new UnitNumber(\"20-01\"), new Price(\"750000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(condo1.equals(condo1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(apartment1)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(condo1.equals(condo2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(condo1.equals(condo2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Condo object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(condo3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not a Condo","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Bto)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"10-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(bto)); // Different subclass should return false*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentCondo_returnsFalse() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode1 \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode2 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo1 \u003d new Condo(postalCode1, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo2 \u003d new Condo(postalCode2, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(condo1.equals(condo2)); // different condo","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameAttributes_sameHashCode() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo1 \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo2 \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(condo1.hashCode(), condo2.hashCode()); // same attributes, same hash code","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_validCondo_correctFormat() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" PostalCode postalCode \u003d new PostalCode(\"567510\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" UnitNumber unitNumber \u003d new UnitNumber(\"10-65\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" Price price \u003d new Price(\"1500000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Collections.singleton(new Tag(\"Spacious\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" Condo condo \u003d new Condo(postalCode, unitNumber, price, tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[567510] Unit Number: 10-65\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, condo.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":105}},{"path":"src/test/java/seedu/address/model/person/HdbTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class HdbTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Hdb hdb1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Hdb hdb2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" hdb1 \u003d new Hdb(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" hdb2 \u003d new Hdb(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Affordable\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some Hdb objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb hdb1 \u003d new Hdb(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb hdb2 \u003d new Hdb(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb hdb3 \u003d new Hdb(new PostalCode(\"654321\"), new UnitNumber(\"02-02\"), new Price(\"350000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(apartment1)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Hdb object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(hdb3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not an Hdb","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Bto)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"300000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(bto)); // Different subclass should return false*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, hdb1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, hdb1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, hdb1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), hdb1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(hdb1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentHdb_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(hdb1.equals(hdb2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameHdb_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb sameHdb \u003d new Hdb(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(hdb1.equals(sameHdb));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameHdb_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" Hdb sameHdb \u003d new Hdb(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(hdb1.hashCode(), sameHdb.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, hdb1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":142}},{"path":"src/test/java/seedu/address/model/person/OtherPropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class OtherPropertyTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private OtherProperty otherProperty1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private OtherProperty otherProperty2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":" otherProperty1 \u003d new OtherProperty(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" otherProperty2 \u003d new OtherProperty(postalCode2, unitNumber2, price2, tags2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" // Create a common set of tags","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" tags.add(new Tag(\"Luxurious\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" // Create some OtherProperty objects","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty otherProperty1 \u003d new OtherProperty(new PostalCode(\"123456\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"01-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty otherProperty2 \u003d new OtherProperty(new PostalCode(\"123456\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"01-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty otherProperty3 \u003d new OtherProperty(new PostalCode(\"654321\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" new UnitNumber(\"02-02\"), new Price(\"600000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment apartment1 \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for equality with the same object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(otherProperty1.equals(otherProperty1)); // Same object should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(apartment1)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(otherProperty1.equals(otherProperty2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" /*// Test for equality with a different but identical object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(otherProperty1.equals(otherProperty2)); // Different object, same content should return true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different OtherProperty object","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(otherProperty3)); // Different content should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with an object that is not an OtherProperty","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(null)); // Null should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(new Object())); // Different type should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" // Test for inequality with a different Property subclass (e.g., Bto)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":" Bto bto \u003d new Bto(new PostalCode(\"123456\"), new UnitNumber(\"01-01\"), new Price(\"500000\"), tags);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(bto)); // Different subclass should return false","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, otherProperty1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, otherProperty1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, otherProperty1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), otherProperty1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentOtherProperty_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(otherProperty1.equals(otherProperty2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameOtherProperty_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" OtherProperty sameOtherProperty \u003d new OtherProperty(postalCode1, unitNumber1, price1, tags1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(otherProperty1.hashCode(), sameOtherProperty.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, otherProperty1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":133}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPhoneMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getPhone(), ALICE.getPhone());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":" public void getEmailMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getEmail(), ALICE.getEmail());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" public void getAddressMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getAddress(), ALICE.getAddress());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTagsMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getTags(), ALICE.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":" public void getListOfSellingPropertiesMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getListOfSellingProperties(), ALICE.getListOfSellingProperties());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"OrangeCatLoves"},"content":" public void getListOfBuyingPropertiesMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.getListOfBuyingProperties(), ALICE.getListOfBuyingProperties());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"OrangeCatLoves"},"content":" public void containsBuyPropertyMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment property \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-65\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1500000\"), ALICE.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(ALICE.containsBuyProperty(property));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"OrangeCatLoves"},"content":" public void addBuyPropertyMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"OrangeCatLoves"},"content":" Apartment property \u003d new Apartment(new PostalCode(\"123456\"), new UnitNumber(\"10-65\"),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"OrangeCatLoves"},"content":" new Price(\"1500000\"), ALICE.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"OrangeCatLoves"},"content":" ALICE.addBuyProperty(property);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(ALICE.containsBuyProperty(property));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"OrangeCatLoves"},"content":" public void isSamePersonMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"OrangeCatLoves"},"content":" public void equalsMethod() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"OrangeCatLoves"},"content":" public void toStringMethod2() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.toString(), ALICE.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCodeMethod2() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(ALICE.hashCode(), ALICE.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":58,"-":99}},{"path":"src/test/java/seedu/address/model/person/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"OrangeCatLoves"},"content":" private PostalCode postalCode2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"OrangeCatLoves"},"content":" private UnitNumber unitNumber2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"OrangeCatLoves"},"content":" private Price price2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"OrangeCatLoves"},"content":" private Tag tag2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"OrangeCatLoves"},"content":" private Set\u003cTag\u003e tags2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"OrangeCatLoves"},"content":" private Property property1;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"OrangeCatLoves"},"content":" private Property property2;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"OrangeCatLoves"},"content":" @BeforeEach","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"OrangeCatLoves"},"content":" public void setUp() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"OrangeCatLoves"},"content":" // Assuming the constructors for PostalCode, UnitNumber, and Price are simple and available","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode1 \u003d new PostalCode(\"123456\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"OrangeCatLoves"},"content":" postalCode2 \u003d new PostalCode(\"654321\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber1 \u003d new UnitNumber(\"01-01\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"OrangeCatLoves"},"content":" unitNumber2 \u003d new UnitNumber(\"02-02\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"OrangeCatLoves"},"content":" price1 \u003d new Price(\"1000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"OrangeCatLoves"},"content":" price2 \u003d new Price(\"2000000\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"OrangeCatLoves"},"content":" tag1 \u003d new Tag(\"Tag1\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"OrangeCatLoves"},"content":" tag2 \u003d new Tag(\"Tag2\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"OrangeCatLoves"},"content":" tags1 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"OrangeCatLoves"},"content":" tags1.add(tag1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"OrangeCatLoves"},"content":" tags2 \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"OrangeCatLoves"},"content":" tags2.add(tag2);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"OrangeCatLoves"},"content":" property1 \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"OrangeCatLoves"},"content":" property2 \u003d new Property(postalCode2, unitNumber2, price2, tags2) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPostalCode_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(postalCode1, property1.getPostalCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"OrangeCatLoves"},"content":" public void getUnitNumber_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(unitNumber1, property1.getUnitNumber());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"OrangeCatLoves"},"content":" public void getPrice_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(price1, property1.getPrice());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"OrangeCatLoves"},"content":" public void getTags_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(Collections.unmodifiableSet(tags1), property1.getTags());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"OrangeCatLoves"},"content":" /*@Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"OrangeCatLoves"},"content":" public void isSameProperty_sameProperty_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"OrangeCatLoves"},"content":" Property sameProperty \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(property1.isSameProperty(sameProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"OrangeCatLoves"},"content":" }*/","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"OrangeCatLoves"},"content":" public void isSameProperty_differentProperties_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.isSameProperty(property2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameObject_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(property1.equals(property1));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_nullObject_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.equals(null));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentTypes_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.equals(\"String\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_differentProperties_failure() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"OrangeCatLoves"},"content":" assertFalse(property1.equals(property2));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"OrangeCatLoves"},"content":" public void equals_sameProperties_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"OrangeCatLoves"},"content":" Property sameProperty \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"OrangeCatLoves"},"content":" assertTrue(property1.equals(sameProperty));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"OrangeCatLoves"},"content":" public void hashCode_sameProperties_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"OrangeCatLoves"},"content":" Property sameProperty \u003d new Property(postalCode1, unitNumber1, price1, tags1) {};","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(property1.hashCode(), sameProperty.hashCode());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"OrangeCatLoves"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"OrangeCatLoves"},"content":" public void toString_success() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"OrangeCatLoves"},"content":" String expectedString \u003d \"[123456] Unit Number: 01-01\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"OrangeCatLoves"},"content":" assertEquals(expectedString, property1.toString());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":124}},{"path":"src/test/java/seedu/address/testutil/IndexBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"OrangeCatLoves"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"OrangeCatLoves"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"OrangeCatLoves"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"OrangeCatLoves"},"content":" * A utility class to help with building Index objects.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"OrangeCatLoves"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"OrangeCatLoves"},"content":"public class IndexBuilder {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"OrangeCatLoves"},"content":" private final int index;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"OrangeCatLoves"},"content":" public IndexBuilder() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"OrangeCatLoves"},"content":" index \u003d 1;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"OrangeCatLoves"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"OrangeCatLoves"},"content":" public Index build() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"OrangeCatLoves"},"content":" return Index.fromZeroBased(index);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"OrangeCatLoves"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"OrangeCatLoves"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"OrangeCatLoves":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"import java.util.List;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" private List\u003cProperty\u003e buyingProperties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code buyingProperties} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Potatoad88"},"content":" public PersonBuilder withBuyProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Potatoad88"},"content":" this.buyingProperties.add(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Potatoad88"},"content":" return new Person(name, phone, email, address, tags, null, buyingProperties);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Potatoad88":13,"-":95}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Potatoad88"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Potatoad88"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Potatoad88"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.person.UnitNumber;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Potatoad88"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Potatoad88"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Potatoad88"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Potatoad88"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Potatoad88"},"content":" public static final String DEFAULT_POSTAL_CODE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Potatoad88"},"content":" public static final String DEFAULT_UNIT_NUMBER \u003d \"10-01\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xqtann"},"content":" public static final String DEFAULT_PRICE \u003d \"1500000\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Potatoad88"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Potatoad88"},"content":" private UnitNumber unitNumber;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Potatoad88"},"content":" private Price price;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Potatoad88"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Potatoad88"},"content":" * Creates a {@code PropertyBuilder} with the default details.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Potatoad88"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTAL_CODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Potatoad88"},"content":" unitNumber \u003d new UnitNumber(DEFAULT_UNIT_NUMBER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Potatoad88"},"content":" price \u003d new Price(DEFAULT_PRICE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Potatoad88"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Potatoad88"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code UnitNumber} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withUnitNumber(String unitNumber) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Potatoad88"},"content":" this.unitNumber \u003d new UnitNumber(unitNumber);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Potatoad88"},"content":" * Sets the {@code Price} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withPrice(String price) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Potatoad88"},"content":" this.price \u003d new Price(price);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Potatoad88"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Potatoad88"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Potatoad88"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Potatoad88"},"content":" public PropertyBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Potatoad88"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Potatoad88"},"content":" return this;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Potatoad88"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Potatoad88"},"content":" public Property build() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Potatoad88"},"content":" return new Property(postalCode, unitNumber, price, tags) {};","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Potatoad88"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Potatoad88"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"xqtann":1,"Potatoad88":71}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Potatoad88"},"content":" public static final Person HENRY \u003d new PersonBuilder().withName(\"Henry Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Potatoad88"},"content":" .withEmail(\"henry@example.com\").withAddress(\"kent ridge\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Potatoad88"},"content":" .withBuyProperty(new PropertyBuilder().build()).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Potatoad88"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE, HENRY));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Potatoad88":4,"-":75}}] diff --git a/AY2425S1-CS2103T-F10-3_tp_master/commits.json b/AY2425S1-CS2103T-F10-3_tp_master/commits.json index 6a9d0fc7..ac204460 100644 --- a/AY2425S1-CS2103T-F10-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-F10-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xqtann":[{"date":"2024-10-02","commitResults":[{"hash":"85a51e62b6ea06d25f65713096981566745c7f8c","isMergeCommit":false,"messageTitle":"Add Xin Quan\u0027s info in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"1f0598a64a08fe15726400e14df90a5f4133f80c","isMergeCommit":false,"messageTitle":"Update Xin Quan\u0027s info on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"050ccefc14a33197d30ec44e65da8e6ac2e23608","isMergeCommit":false,"messageTitle":"Change name on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f5d3a864a8bcbec3f3d7e90bcdd828f5fbbb908b","isMergeCommit":false,"messageTitle":"Change Xin Quan\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"302a485c902bb65854f5c42901c68dea310b8011","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ITZXITZX/Update-AboutUs-Isaac","messageBody":"Update-AboutUs-Isaac","fileTypesAndContributionMap":{}},{"hash":"59a71c0e5e7b68669ef5f11895ae984c12549e9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-XinQuan-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e0f71f912824aa4031255f6ef10037c4bb8f679e","isMergeCommit":true,"messageTitle":"Merge pull request #18 from xqtann/add-XinQuan-info","messageBody":"Update-AboutUs-XinQuan","fileTypesAndContributionMap":{}},{"hash":"02cc6c0471a6022933e5539b270dbf4c74ae735e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-dylan-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9197389094bd597c7ccadbd56ce7b39acbf04c93","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Potatoad88/add-dylan-info","messageBody":"Update-AboutUs-Dylan","fileTypesAndContributionMap":{}},{"hash":"11ab64db133147e6c5bafb17d3202226d22998d6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-WeiBin-photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"508c05105d402c374737d68e552489b35bf09e6e","isMergeCommit":true,"messageTitle":"Merge pull request #23 from OrangeCatLoves/add-WeiBin-photo","messageBody":"Update-AboutUs-WeiBin","fileTypesAndContributionMap":{}},{"hash":"e0e3762d375fb381eb0add3f3d170ec17f8dafde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"00adb2366c2213350198ab1be2dcdf9700efd923","isMergeCommit":true,"messageTitle":"Merge pull request #26 from triishaa/master","messageBody":"Update-AboutUs-Trisha","fileTypesAndContributionMap":{}},{"hash":"155f949b689bb155c2fd9bbe622ead06de420bf9","isMergeCommit":false,"messageTitle":"Add newline for CI check","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"8293e01d51ac3092fbbe99fc056d0d213f08c758","isMergeCommit":false,"messageTitle":"Change newline for CI check","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"84818c7f03736d3321388263f9aa926b5b8a1daa","isMergeCommit":true,"messageTitle":"Merge pull request #27 from xqtann/add-XinQuan-info","messageBody":"Add newline for CI check","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"970fdf6c79145ef3b9527a3939537267dfddd472","isMergeCommit":false,"messageTitle":"Update CI and codecov badges","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"7437b28536a6f45c36e0c369649ce61052f8e3fb","isMergeCommit":false,"messageTitle":"Remove traces of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":9}}},{"hash":"722da69b02407b09dc23816dd29e7fc2b945a1ba","isMergeCommit":true,"messageTitle":"Merge pull request #30 from xqtann/branch-change-readme","messageBody":"Update Readme and AboutUs page to remove AB3 traces","fileTypesAndContributionMap":{}},{"hash":"0e4749cedf2eb65cd2fddbd769fa699e76be3394","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Potatoad88/add-valueProposition-userStories-targetUserProfile","messageBody":"Updated the DG for Value Proposition, Target User Profile, User Stories","fileTypesAndContributionMap":{}},{"hash":"4518dd7608160165a7f125d7bf2d666a2ef90606","isMergeCommit":true,"messageTitle":"Merge pull request #31 from OrangeCatLoves/master","messageBody":"Updated the DG for Non-Functional Requirements","fileTypesAndContributionMap":{}},{"hash":"0a4b423eb9c3a1aac77c7b730e1eb64724a0d97d","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Potatoad88/add-useCases","messageBody":"Updated the DG for Use Cases","fileTypesAndContributionMap":{}},{"hash":"1b99408eb8d098095d2116bfb6091e57da8eca30","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ITZXITZX/Update_README","messageBody":"Update readme","fileTypesAndContributionMap":{}},{"hash":"5da72913b5cd24e435dfece3522b11a1b270e36c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from triishaa/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"4a26181e079bcc02ff0ae7f7267cb0202477f23d","isMergeCommit":false,"messageTitle":"Create AddBuyCommandParser with dummy return values","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"3c074b02e082f2256a67a8da1a4cb0ce83d19eee","isMergeCommit":false,"messageTitle":"Add javadoc to fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"78bc3c41566d64e4c4ebc93cda43607e09014c03","isMergeCommit":false,"messageTitle":"Add AddBuyCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":0}}},{"hash":"4fae7ec1588bdc7fe07fd2a2391da74fd3969f54","isMergeCommit":false,"messageTitle":"Remove unused method in AddBuyCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}},{"hash":"0f0b71292ab9799f0dc837233b06247f60f70097","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Potatoad88/add-buy-command","messageBody":"Add buy property command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"5397c123edc7aa86cedbe3628d52a57a36ae8773","isMergeCommit":false,"messageTitle":"Update AddPropertyToBuyParser and AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":18},"other":{"insertions":4,"deletions":3}}},{"hash":"dae255dedb39a133fedf3d34154233bb8eacfbe3","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Potatoad88/update-buy-command","messageBody":"Update test and logic of buy command","fileTypesAndContributionMap":{}},{"hash":"e1f28ec09916084ac36412203526f04d3eb898f0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-AddBuyCommandParser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"02c8796aa881700fc15d7dd8eac930336e361dae","isMergeCommit":false,"messageTitle":"Add logic for AddPropertyToBuyParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":12}}},{"hash":"ae6b771dbb7b86b18c78ebd2c53dad00b08a8e9d","isMergeCommit":false,"messageTitle":"Add valid commands for testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":3}}}]},{"date":"2024-10-15","commitResults":[{"hash":"e8bc3ab2f265947c5506a038fcd84bc1ae6d039b","isMergeCommit":false,"messageTitle":"Add testcases for AddPropertyToBuyParserTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":5},"test-code":{"insertions":109,"deletions":1}}},{"hash":"bde9a0c27451e23e6a1259458e0a39a527da3121","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":46,"deletions":43}}},{"hash":"5cc84cad3b18bdea0007007abc4dd094b176b572","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest to include parseCommand_addBuy test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":1}}},{"hash":"3e2e1c84462767e7406e5d933278300a092b6145","isMergeCommit":false,"messageTitle":"Add invalid test commands in CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":2}}},{"hash":"b0bc02a419b52d1689dee162ba050e415f183531","isMergeCommit":false,"messageTitle":"Add invalid test commands and add invalidValue testcase for AddPropertyToBuyParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":34,"deletions":26}}},{"hash":"5eb3c82683223747d18d1695bb34990a96ed0327","isMergeCommit":true,"messageTitle":"Merge pull request #69 from xqtann/update-AddBuyCommandParser","messageBody":"Update AddPropertyToBuyParser and AddressBookParser","fileTypesAndContributionMap":{}}]}],"OrangeCatLoves":[{"date":"2024-10-02","commitResults":[{"hash":"680b1ec6fb602a7a5e75e6e8a873132f17ce6bdd","isMergeCommit":false,"messageTitle":"Updated AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"395402d97122bed7b86e721aa94e849709a91e88","isMergeCommit":false,"messageTitle":"Updated AboutUs for Wei Bin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"0997e87483fc0d78d848f1dc72ae910728bc242e","isMergeCommit":false,"messageTitle":"Updated AboutUs for Wei Bin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9b4606d98e75505ab9568dc98077ad023551b950","isMergeCommit":false,"messageTitle":"Updated the AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"a81f4d0a24214bc4e863871990898729d8b67bae","isMergeCommit":false,"messageTitle":"Updated Project team name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"3a4d836018a6aa1d06955a58edc48f0e2f4190bb","isMergeCommit":false,"messageTitle":"Updated the DG for Non-Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-10-07","commitResults":[{"hash":"9f79c69034070e871b6ac703f052d43b8940715d","isMergeCommit":false,"messageTitle":"Added new Properties parent classes and subclasses","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":234,"deletions":0}}},{"hash":"1b7672141d9eff41f4036c04fa6ab9b706fcdaf4","isMergeCommit":false,"messageTitle":"Updated some changes to pass Checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"d7e73378ae2050f9e6e5c1519a24b913fa5b0842","isMergeCommit":false,"messageTitle":"Updated the code to pass some Checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":5}}},{"hash":"fe69c334e8e216ec12efb103593b0b992b4f7747","isMergeCommit":false,"messageTitle":"Made changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":8}}},{"hash":"e979de6cd51f1f82a9c9e1f6103a5feed6a8daac","isMergeCommit":false,"messageTitle":"Made changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"docs":{"insertions":3,"deletions":3}}},{"hash":"589f9cc7a43d7d9c4cc68c939399649e6bbef6d2","isMergeCommit":false,"messageTitle":"Made changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-09","commitResults":[{"hash":"3347d840fcde6008bfc9fc7ecbb7496078945ae0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Property-To-Sell-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81bf4cceb349e139e843c6730c0aa47b7fc0009c","isMergeCommit":false,"messageTitle":"Made some changes to the addSell command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":10}}},{"hash":"9c4224d691637b01b8f10e21822cef725537c482","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5f3f8e8819145eba044c911fb3b0e4b137504713","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"01f69f81791a9843166f24240d6d420359fd93f9","isMergeCommit":false,"messageTitle":"Updated addSell command. The command is at least being recognised. However, the model has yet to be updated. Storage of information on Property not started on yet","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":326,"deletions":29},"test-code":{"insertions":91,"deletions":10}}},{"hash":"26cbfd270d7de029042365001e1d23c875c64539","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":25}}},{"hash":"6ccf1c474d14fe47b63b50d9aa8f721b713eeb6a","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":13}}},{"hash":"b8374125b94b1e1176736d21ae8f26d167735f00","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"28652fb2fd69f779cf583f9b3b1c579e2eef47bf","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"81655dd93daf5bfb43fde42815836de0ed2fd741","isMergeCommit":false,"messageTitle":"Changed some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":7}}},{"hash":"bf0ea8999540c8da28cb6006a497008997e7b6fd","isMergeCommit":false,"messageTitle":"Changed some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"ba5b109934a3dd0bc8c940826d41db8e37cc302e","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"d593cf833ecd7397996d7e96c9630c3f38b65fe9","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"98c562d57795585783b6db8c2594f52472582711","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"da72637c72c450f6658bee7b857d760b845b8722","isMergeCommit":false,"messageTitle":"Changes made to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-14","commitResults":[{"hash":"561e4fea0f7c2643ef25513069455daedbb60e3a","isMergeCommit":false,"messageTitle":"Updated the addSellProperty command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":13}}},{"hash":"1de57c57f6f4b1507c4932fa4d30b3b094b24aa3","isMergeCommit":false,"messageTitle":"Updated the addSellProperty command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":10}}},{"hash":"0100f2c8b5da181f4f7fdaca534e93f022d82f30","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Property-To-Sell-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32e6f53bfb41f0f6a57bd3b6a32ff5053df6f7cd","isMergeCommit":false,"messageTitle":"Updated the addSellProperty command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":17}}},{"hash":"550c7684f57af3fd53ba912f06870f1a065fe83d","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"b056be19a7ec33507e36563166cb23398bbd17f3","isMergeCommit":false,"messageTitle":"Updated test cases to pass JavaCI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"decba824a0e982c59628673e51694191377308fa","isMergeCommit":false,"messageTitle":"Added some test cases to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":38}}},{"hash":"ae8c60fdd5a36c7069a776092174325e0840dd54","isMergeCommit":false,"messageTitle":"Made some changes to pass codeCov temporaily","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"d133359f8de8f2e4914e25c829cd4d0ce855ab4b","isMergeCommit":false,"messageTitle":"Made some changes to pass JavaCI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-15","commitResults":[{"hash":"3b78ef7e98a82af1570f2749d1b0d3e40a720090","isMergeCommit":false,"messageTitle":"Added several test files to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":620,"deletions":0}}},{"hash":"ffab27a3d1db93d443a708b6b210b29a8add9a27","isMergeCommit":false,"messageTitle":"Made some changes to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":50},"test-code":{"insertions":163,"deletions":63}}},{"hash":"b242d7cc650dcfa43dcd8b8002df6cbbb33e61d8","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"f1573be455038439dfd05dd301288277b9c64050","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":18}}},{"hash":"4f2df6b254fe09b1f451bc9a2691462bde980a4b","isMergeCommit":false,"messageTitle":"Made some changes to pass JavaCI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"808954d1d2f300b3cddfae0feb831a081f5288a7","isMergeCommit":false,"messageTitle":"Made some changes to pass code cov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":24,"deletions":3}}},{"hash":"0e99b18d85633b2a5d043fb23b474032c76b735a","isMergeCommit":false,"messageTitle":"Added a new class to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":0}}},{"hash":"3bf4bca9716a6ed0d0390644e4ec76f5d8aa9c2a","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0},"test-code":{"insertions":149,"deletions":40}}},{"hash":"41b7639a29a834794c2b84652bbf486b43fa935a","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":19,"deletions":3}}},{"hash":"621a8e3494a0651c6cf107a31bb029b5169976dd","isMergeCommit":false,"messageTitle":"Added some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":52,"deletions":0}}},{"hash":"8e67777ac49e318463b73da2c1de520545f49b57","isMergeCommit":false,"messageTitle":"Add some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"62db3f82cd528bf0e6f2370461dcc666fd6e449e","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":1}}},{"hash":"85afedc9c66f8e805d6fd746bfdac4ec79b1b7cc","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":2}}}]},{"date":"2024-10-16","commitResults":[{"hash":"08f5a5200fc92da700245ebcb27f7381c8badf0b","isMergeCommit":false,"messageTitle":"Changed the type of error message shown when user inputs an invalid index of a negative number for an addSell command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"55ff9f5319ac14f64c6867205b5d03869c5cc807","isMergeCommit":false,"messageTitle":"Made some changes to the Actual Usage of command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"d0f877bf9c465896fc92500ee7306ad783bdf0f3","isMergeCommit":true,"messageTitle":"Merge pull request #68 from OrangeCatLoves/Add-Property-To-Sell-Command","messageBody":"Working on AddSellProperty command /addSell","fileTypesAndContributionMap":{}}]}],"Potatoad88":[{"date":"2024-10-02","commitResults":[{"hash":"3ad2905cc7f007ffb1d96cf073b0caf1879da16a","isMergeCommit":false,"messageTitle":"Update aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"7879417240f7873302fb48fd7bb7957a4c1abdb3","isMergeCommit":false,"messageTitle":"Update responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"98e1622f4dfd035969017434211731c5fcc7e4ef","isMergeCommit":false,"messageTitle":"Add user stories/profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":12}}},{"hash":"fac9b653af1b2e5950b58b90ad26f18348531cac","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"37ecc5e536571e0edc5a05c2b789d4e9dba44e79","isMergeCommit":false,"messageTitle":"Add buy property command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":0}}},{"hash":"5a157135d55db257eb5cdc33690231be2d3d9583","isMergeCommit":false,"messageTitle":"Remove logic in buy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":44}}},{"hash":"4c2303aefffca513ebe4b66cd6dd40eeab19b4e6","isMergeCommit":false,"messageTitle":"Add test for buy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":21,"deletions":0}}},{"hash":"776e470027513c16414a84bb48d85aee3980cbfa","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":5}}}]},{"date":"2024-10-13","commitResults":[{"hash":"79de25ef295a073c4105cb173261d8a97d0a982a","isMergeCommit":false,"messageTitle":"Update test and logic of buy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":8},"test-code":{"insertions":76,"deletions":3}}}]},{"date":"2024-10-14","commitResults":[{"hash":"9c8917e6bc7aa5ac940022dcf2cbc776eca41108","isMergeCommit":false,"messageTitle":"Update buy command tests to work","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":8},"test-code":{"insertions":22,"deletions":14}}},{"hash":"6924a93703a44f217e3b40a11d3a69552394db58","isMergeCommit":false,"messageTitle":"Fix styling in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"ec0866ae302028f1dba5a07516ab833ef3055bf7","isMergeCommit":false,"messageTitle":"Fix styling in PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"a571a8dfff022ec75732e7ef4ba1cc0dcd973740","isMergeCommit":false,"messageTitle":"Update typical address book json","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"f0453d7ed2faeba8eb673185cad028a577ea7244","isMergeCommit":false,"messageTitle":"Add tests for equals method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":4}}}]}],"triishaa":[{"date":"2024-10-02","commitResults":[{"hash":"5b75f015f9ba782965f0ac1339ebcc6968e13422","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"76493cf2e03cac291efe40a03249534753a4c92e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":1}}}]},{"date":"2024-10-08","commitResults":[{"hash":"823dccfed228f587bbd58c08edc70df065551420","isMergeCommit":false,"messageTitle":"Update find feature to support name and contact number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":20},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":8,"deletions":4}}},{"hash":"339c6acf5513927d8c74ef6f4b2e85e69aade20a","isMergeCommit":false,"messageTitle":"Change style to pass CI Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"docs":{"insertions":1,"deletions":2}}}]},{"date":"2024-10-09","commitResults":[{"hash":"95cfd2ba1eae759345ef8c62eff656584112bf6d","isMergeCommit":false,"messageTitle":"Update Contact to PhoneNumber","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":27},"other":{"insertions":22,"deletions":22},"test-code":{"insertions":1,"deletions":1}}},{"hash":"71e66877478e97676d07a78b8270bac8d0b3165c","isMergeCommit":false,"messageTitle":"Change to pass CheckStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"e058c66936051d667ebe0fc592306fbec1d4ffb0","isMergeCommit":false,"messageTitle":"Update text to pass CI Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"947204c38ca161ae3e8568884c25cdcf8fda3470","isMergeCommit":false,"messageTitle":"Change indentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"9bfd3522657d5445a09f3c8fcb03ae35c7019836","isMergeCommit":false,"messageTitle":"Change in indentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f12849d6fd084b4d9d8379e550e03bab7e84dc33","isMergeCommit":false,"messageTitle":"Change indentation: No longer using Continuation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"8755fabc6310dc78a115b528ee563911db393f2e","isMergeCommit":false,"messageTitle":"Change indentation in FindCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"f5d5bd54ac42a119616f5bfcc2c14b5971dc7079","isMergeCommit":false,"messageTitle":"Update test cases to accomodate changes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":1}}},{"hash":"6b5f0c160b1fc10dba0226ba7ef3681d56e040ae","isMergeCommit":false,"messageTitle":"Change line length to pass CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"c1537c397076d4be0b75bf7d1cb944ef94079aeb","isMergeCommit":false,"messageTitle":"Change line length to pass CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7cf72c41dd20d912f6b41fa663138fe7d378abcd","isMergeCommit":false,"messageTitle":"Changed variable name from nameKeyword to phoneNumberKeywords","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"ITZXITZX":[{"date":"2024-10-01","commitResults":[{"hash":"fb12a633d9d2e51560fc816baad85b84e4e28629","isMergeCommit":false,"messageTitle":"Update Isaac AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"de5f9494ffb281e35d3c6d0c745859d2efcd77d7","isMergeCommit":true,"messageTitle":"Merge pull request #12 from xqtann/add-XinQuan-photo","messageBody":"Add Xin Quan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"a13bd3784483e30d84b4479cbd51ab08b32a622f","isMergeCommit":false,"messageTitle":"Update AboutUs for Isaac","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"01eb42d092b074e38a88b3b719fb2cedefe7e4d2","isMergeCommit":false,"messageTitle":"Update GitHub Actions build status badge link and codecov link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"dff86c9a3422f37d0f9c4cc1d4a8d08698425e10","isMergeCommit":false,"messageTitle":"Acknowledge original source of the code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"c51d73bb825736fc63f653901e08b7296b66afb8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F10-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b299622203b1b13845bfbc2570f8d107518a0df4","isMergeCommit":true,"messageTitle":"Pull origin/master to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18e9112e29652a2bdcf2b98a458b76405b219041","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update_README","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"847e307160b061c9552b84fe943ba0a0e53b8057","isMergeCommit":false,"messageTitle":"Add new Prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"ac671708c0c11b76789696d134be3993b3a61bc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-new-prefixes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6f81c42419c7332b58125f436daed1c7038a12e","isMergeCommit":false,"messageTitle":"Update code differences with origin/master","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"f07e5e6fa4746ffc33d4d7561281d976a1f5e130","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-add-new-prefixes\u0027 of https://github.com/ITZXITZX/tp into branch-add-new-prefixes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"852d0195f1576075eb1b2e986fc8d28bb6965799","isMergeCommit":true,"messageTitle":"Merge pull request #56 from ITZXITZX/branch-add-new-prefixes","messageBody":"branch-add-new-prefixes","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"dfbcd500c8923f9179896cbb7acbb7ee12004761","isMergeCommit":true,"messageTitle":"Merge pull request #59 from triishaa/Update-Find-Command","messageBody":"Update find command","fileTypesAndContributionMap":{}},{"hash":"4f7e1098bec44d424a98657dea4413b873e6174a","isMergeCommit":true,"messageTitle":"Merge pull request #60 from xqtann/add-AddBuyCommandParser","messageBody":"Create AddBuyCommandParser with dummy return values","fileTypesAndContributionMap":{}},{"hash":"7a8cb3cb6e7e53733ff158f46598852601074f10","isMergeCommit":true,"messageTitle":"Merge pull request #57 from OrangeCatLoves/Add-Property-To-Sell-Command","messageBody":"Added new Properties parent classes and subclasses + Edited Command class for new AddPropertyToSellCommand","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"xqtann":{"docs":78,"functional-code":113,"test-code":183},"OrangeCatLoves":{"docs":55,"functional-code":785,"test-code":1168},"Potatoad88":{"docs":117,"functional-code":119,"test-code":164},"triishaa":{"docs":8,"functional-code":97,"test-code":155},"ITZXITZX":{"docs":12,"functional-code":5,"test-code":0}},"authorContributionVariance":{"xqtann":4565.056,"OrangeCatLoves":85326.14,"Potatoad88":3029.8767,"triishaa":4812.617,"ITZXITZX":111.67355},"authorDisplayNameMap":{"xqtann":"CS2103T-F10-3 TAN ..QUAN","OrangeCatLoves":"CS2103T-F10-3 LOW .. BIN","Potatoad88":"CS2103T-F10-3 DYLA..FUNG","triishaa":"CS2103T-F10-3 PATO..ISHA","ITZXITZX":"CS2103T-F10-3 ISAA..XIAN"}} +{"authorDailyContributionsMap":{"xqtann":[{"date":"2024-10-02","commitResults":[{"hash":"85a51e62b6ea06d25f65713096981566745c7f8c","isMergeCommit":false,"messageTitle":"Add Xin Quan\u0027s info in AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"1f0598a64a08fe15726400e14df90a5f4133f80c","isMergeCommit":false,"messageTitle":"Update Xin Quan\u0027s info on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"050ccefc14a33197d30ec44e65da8e6ac2e23608","isMergeCommit":false,"messageTitle":"Change name on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f5d3a864a8bcbec3f3d7e90bcdd828f5fbbb908b","isMergeCommit":false,"messageTitle":"Change Xin Quan\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"302a485c902bb65854f5c42901c68dea310b8011","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ITZXITZX/Update-AboutUs-Isaac","messageBody":"Update-AboutUs-Isaac","fileTypesAndContributionMap":{}},{"hash":"59a71c0e5e7b68669ef5f11895ae984c12549e9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-XinQuan-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e0f71f912824aa4031255f6ef10037c4bb8f679e","isMergeCommit":true,"messageTitle":"Merge pull request #18 from xqtann/add-XinQuan-info","messageBody":"Update-AboutUs-XinQuan","fileTypesAndContributionMap":{}},{"hash":"02cc6c0471a6022933e5539b270dbf4c74ae735e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-dylan-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9197389094bd597c7ccadbd56ce7b39acbf04c93","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Potatoad88/add-dylan-info","messageBody":"Update-AboutUs-Dylan","fileTypesAndContributionMap":{}},{"hash":"11ab64db133147e6c5bafb17d3202226d22998d6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-WeiBin-photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"508c05105d402c374737d68e552489b35bf09e6e","isMergeCommit":true,"messageTitle":"Merge pull request #23 from OrangeCatLoves/add-WeiBin-photo","messageBody":"Update-AboutUs-WeiBin","fileTypesAndContributionMap":{}},{"hash":"e0e3762d375fb381eb0add3f3d170ec17f8dafde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"00adb2366c2213350198ab1be2dcdf9700efd923","isMergeCommit":true,"messageTitle":"Merge pull request #26 from triishaa/master","messageBody":"Update-AboutUs-Trisha","fileTypesAndContributionMap":{}},{"hash":"155f949b689bb155c2fd9bbe622ead06de420bf9","isMergeCommit":false,"messageTitle":"Add newline for CI check","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"8293e01d51ac3092fbbe99fc056d0d213f08c758","isMergeCommit":false,"messageTitle":"Change newline for CI check","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"84818c7f03736d3321388263f9aa926b5b8a1daa","isMergeCommit":true,"messageTitle":"Merge pull request #27 from xqtann/add-XinQuan-info","messageBody":"Add newline for CI check","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"970fdf6c79145ef3b9527a3939537267dfddd472","isMergeCommit":false,"messageTitle":"Update CI and codecov badges","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"7437b28536a6f45c36e0c369649ce61052f8e3fb","isMergeCommit":false,"messageTitle":"Remove traces of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":9}}},{"hash":"722da69b02407b09dc23816dd29e7fc2b945a1ba","isMergeCommit":true,"messageTitle":"Merge pull request #30 from xqtann/branch-change-readme","messageBody":"Update Readme and AboutUs page to remove AB3 traces","fileTypesAndContributionMap":{}},{"hash":"0e4749cedf2eb65cd2fddbd769fa699e76be3394","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Potatoad88/add-valueProposition-userStories-targetUserProfile","messageBody":"Updated the DG for Value Proposition, Target User Profile, User Stories","fileTypesAndContributionMap":{}},{"hash":"4518dd7608160165a7f125d7bf2d666a2ef90606","isMergeCommit":true,"messageTitle":"Merge pull request #31 from OrangeCatLoves/master","messageBody":"Updated the DG for Non-Functional Requirements","fileTypesAndContributionMap":{}},{"hash":"0a4b423eb9c3a1aac77c7b730e1eb64724a0d97d","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Potatoad88/add-useCases","messageBody":"Updated the DG for Use Cases","fileTypesAndContributionMap":{}},{"hash":"1b99408eb8d098095d2116bfb6091e57da8eca30","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ITZXITZX/Update_README","messageBody":"Update readme","fileTypesAndContributionMap":{}},{"hash":"5da72913b5cd24e435dfece3522b11a1b270e36c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from triishaa/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"4a26181e079bcc02ff0ae7f7267cb0202477f23d","isMergeCommit":false,"messageTitle":"Create AddBuyCommandParser with dummy return values","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"3c074b02e082f2256a67a8da1a4cb0ce83d19eee","isMergeCommit":false,"messageTitle":"Add javadoc to fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"78bc3c41566d64e4c4ebc93cda43607e09014c03","isMergeCommit":false,"messageTitle":"Add AddBuyCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":0}}},{"hash":"4fae7ec1588bdc7fe07fd2a2391da74fd3969f54","isMergeCommit":false,"messageTitle":"Remove unused method in AddBuyCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}},{"hash":"0f0b71292ab9799f0dc837233b06247f60f70097","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Potatoad88/add-buy-command","messageBody":"Add buy property command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"5397c123edc7aa86cedbe3628d52a57a36ae8773","isMergeCommit":false,"messageTitle":"Update AddPropertyToBuyParser and AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":18},"other":{"insertions":4,"deletions":3}}},{"hash":"dae255dedb39a133fedf3d34154233bb8eacfbe3","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Potatoad88/update-buy-command","messageBody":"Update test and logic of buy command","fileTypesAndContributionMap":{}},{"hash":"e1f28ec09916084ac36412203526f04d3eb898f0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-AddBuyCommandParser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"02c8796aa881700fc15d7dd8eac930336e361dae","isMergeCommit":false,"messageTitle":"Add logic for AddPropertyToBuyParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":12}}},{"hash":"ae6b771dbb7b86b18c78ebd2c53dad00b08a8e9d","isMergeCommit":false,"messageTitle":"Add valid commands for testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":3}}}]},{"date":"2024-10-15","commitResults":[{"hash":"e8bc3ab2f265947c5506a038fcd84bc1ae6d039b","isMergeCommit":false,"messageTitle":"Add testcases for AddPropertyToBuyParserTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":5},"test-code":{"insertions":109,"deletions":1}}},{"hash":"bde9a0c27451e23e6a1259458e0a39a527da3121","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":46,"deletions":43}}},{"hash":"5cc84cad3b18bdea0007007abc4dd094b176b572","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest to include parseCommand_addBuy test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":1}}},{"hash":"3e2e1c84462767e7406e5d933278300a092b6145","isMergeCommit":false,"messageTitle":"Add invalid test commands in CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":2}}},{"hash":"b0bc02a419b52d1689dee162ba050e415f183531","isMergeCommit":false,"messageTitle":"Add invalid test commands and add invalidValue testcase for AddPropertyToBuyParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":34,"deletions":26}}},{"hash":"5eb3c82683223747d18d1695bb34990a96ed0327","isMergeCommit":true,"messageTitle":"Merge pull request #69 from xqtann/update-AddBuyCommandParser","messageBody":"Update AddPropertyToBuyParser and AddressBookParser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"bd5a4d88e74b6b0f1acd973e8364aedf17027fd2","isMergeCommit":true,"messageTitle":"Merge pull request #76 from Potatoad88/fix-buy-success-message","messageBody":"Fix success message","fileTypesAndContributionMap":{}}]}],"OrangeCatLoves":[{"date":"2024-10-02","commitResults":[{"hash":"680b1ec6fb602a7a5e75e6e8a873132f17ce6bdd","isMergeCommit":false,"messageTitle":"Updated AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"395402d97122bed7b86e721aa94e849709a91e88","isMergeCommit":false,"messageTitle":"Updated AboutUs for Wei Bin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"0997e87483fc0d78d848f1dc72ae910728bc242e","isMergeCommit":false,"messageTitle":"Updated AboutUs for Wei Bin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9b4606d98e75505ab9568dc98077ad023551b950","isMergeCommit":false,"messageTitle":"Updated the AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"a81f4d0a24214bc4e863871990898729d8b67bae","isMergeCommit":false,"messageTitle":"Updated Project team name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"3a4d836018a6aa1d06955a58edc48f0e2f4190bb","isMergeCommit":false,"messageTitle":"Updated the DG for Non-Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-10-07","commitResults":[{"hash":"9f79c69034070e871b6ac703f052d43b8940715d","isMergeCommit":false,"messageTitle":"Added new Properties parent classes and subclasses","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":234,"deletions":0}}},{"hash":"1b7672141d9eff41f4036c04fa6ab9b706fcdaf4","isMergeCommit":false,"messageTitle":"Updated some changes to pass Checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"d7e73378ae2050f9e6e5c1519a24b913fa5b0842","isMergeCommit":false,"messageTitle":"Updated the code to pass some Checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":5}}},{"hash":"fe69c334e8e216ec12efb103593b0b992b4f7747","isMergeCommit":false,"messageTitle":"Made changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":8}}},{"hash":"e979de6cd51f1f82a9c9e1f6103a5feed6a8daac","isMergeCommit":false,"messageTitle":"Made changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"docs":{"insertions":3,"deletions":3}}},{"hash":"589f9cc7a43d7d9c4cc68c939399649e6bbef6d2","isMergeCommit":false,"messageTitle":"Made changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-09","commitResults":[{"hash":"3347d840fcde6008bfc9fc7ecbb7496078945ae0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Property-To-Sell-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81bf4cceb349e139e843c6730c0aa47b7fc0009c","isMergeCommit":false,"messageTitle":"Made some changes to the addSell command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":10}}},{"hash":"9c4224d691637b01b8f10e21822cef725537c482","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5f3f8e8819145eba044c911fb3b0e4b137504713","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"01f69f81791a9843166f24240d6d420359fd93f9","isMergeCommit":false,"messageTitle":"Updated addSell command. The command is at least being recognised. However, the model has yet to be updated. Storage of information on Property not started on yet","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":326,"deletions":29},"test-code":{"insertions":91,"deletions":10}}},{"hash":"26cbfd270d7de029042365001e1d23c875c64539","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":25}}},{"hash":"6ccf1c474d14fe47b63b50d9aa8f721b713eeb6a","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":13}}},{"hash":"b8374125b94b1e1176736d21ae8f26d167735f00","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"28652fb2fd69f779cf583f9b3b1c579e2eef47bf","isMergeCommit":false,"messageTitle":"Updated some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"81655dd93daf5bfb43fde42815836de0ed2fd741","isMergeCommit":false,"messageTitle":"Changed some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":7}}},{"hash":"bf0ea8999540c8da28cb6006a497008997e7b6fd","isMergeCommit":false,"messageTitle":"Changed some files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"ba5b109934a3dd0bc8c940826d41db8e37cc302e","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"d593cf833ecd7397996d7e96c9630c3f38b65fe9","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"98c562d57795585783b6db8c2594f52472582711","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"da72637c72c450f6658bee7b857d760b845b8722","isMergeCommit":false,"messageTitle":"Changes made to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-14","commitResults":[{"hash":"561e4fea0f7c2643ef25513069455daedbb60e3a","isMergeCommit":false,"messageTitle":"Updated the addSellProperty command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":13}}},{"hash":"1de57c57f6f4b1507c4932fa4d30b3b094b24aa3","isMergeCommit":false,"messageTitle":"Updated the addSellProperty command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":10}}},{"hash":"0100f2c8b5da181f4f7fdaca534e93f022d82f30","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-Property-To-Sell-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32e6f53bfb41f0f6a57bd3b6a32ff5053df6f7cd","isMergeCommit":false,"messageTitle":"Updated the addSellProperty command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":17}}},{"hash":"550c7684f57af3fd53ba912f06870f1a065fe83d","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"b056be19a7ec33507e36563166cb23398bbd17f3","isMergeCommit":false,"messageTitle":"Updated test cases to pass JavaCI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"decba824a0e982c59628673e51694191377308fa","isMergeCommit":false,"messageTitle":"Added some test cases to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":38}}},{"hash":"ae8c60fdd5a36c7069a776092174325e0840dd54","isMergeCommit":false,"messageTitle":"Made some changes to pass codeCov temporaily","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"d133359f8de8f2e4914e25c829cd4d0ce855ab4b","isMergeCommit":false,"messageTitle":"Made some changes to pass JavaCI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-15","commitResults":[{"hash":"3b78ef7e98a82af1570f2749d1b0d3e40a720090","isMergeCommit":false,"messageTitle":"Added several test files to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":620,"deletions":0}}},{"hash":"ffab27a3d1db93d443a708b6b210b29a8add9a27","isMergeCommit":false,"messageTitle":"Made some changes to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":50},"test-code":{"insertions":163,"deletions":63}}},{"hash":"b242d7cc650dcfa43dcd8b8002df6cbbb33e61d8","isMergeCommit":false,"messageTitle":"Made some changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"f1573be455038439dfd05dd301288277b9c64050","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":18}}},{"hash":"4f2df6b254fe09b1f451bc9a2691462bde980a4b","isMergeCommit":false,"messageTitle":"Made some changes to pass JavaCI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"808954d1d2f300b3cddfae0feb831a081f5288a7","isMergeCommit":false,"messageTitle":"Made some changes to pass code cov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":24,"deletions":3}}},{"hash":"0e99b18d85633b2a5d043fb23b474032c76b735a","isMergeCommit":false,"messageTitle":"Added a new class to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":0}}},{"hash":"3bf4bca9716a6ed0d0390644e4ec76f5d8aa9c2a","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0},"test-code":{"insertions":149,"deletions":40}}},{"hash":"41b7639a29a834794c2b84652bbf486b43fa935a","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":19,"deletions":3}}},{"hash":"621a8e3494a0651c6cf107a31bb029b5169976dd","isMergeCommit":false,"messageTitle":"Added some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":52,"deletions":0}}},{"hash":"8e67777ac49e318463b73da2c1de520545f49b57","isMergeCommit":false,"messageTitle":"Add some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"62db3f82cd528bf0e6f2370461dcc666fd6e449e","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":1}}},{"hash":"85afedc9c66f8e805d6fd746bfdac4ec79b1b7cc","isMergeCommit":false,"messageTitle":"Made some changes to increase codecov","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":2}}}]},{"date":"2024-10-16","commitResults":[{"hash":"08f5a5200fc92da700245ebcb27f7381c8badf0b","isMergeCommit":false,"messageTitle":"Changed the type of error message shown when user inputs an invalid index of a negative number for an addSell command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"55ff9f5319ac14f64c6867205b5d03869c5cc807","isMergeCommit":false,"messageTitle":"Made some changes to the Actual Usage of command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"d0f877bf9c465896fc92500ee7306ad783bdf0f3","isMergeCommit":true,"messageTitle":"Merge pull request #68 from OrangeCatLoves/Add-Property-To-Sell-Command","messageBody":"Working on AddSellProperty command /addSell","fileTypesAndContributionMap":{}}]}],"Potatoad88":[{"date":"2024-10-02","commitResults":[{"hash":"3ad2905cc7f007ffb1d96cf073b0caf1879da16a","isMergeCommit":false,"messageTitle":"Update aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"7879417240f7873302fb48fd7bb7957a4c1abdb3","isMergeCommit":false,"messageTitle":"Update responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"98e1622f4dfd035969017434211731c5fcc7e4ef","isMergeCommit":false,"messageTitle":"Add user stories/profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":12}}},{"hash":"fac9b653af1b2e5950b58b90ad26f18348531cac","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"37ecc5e536571e0edc5a05c2b789d4e9dba44e79","isMergeCommit":false,"messageTitle":"Add buy property command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":0}}},{"hash":"5a157135d55db257eb5cdc33690231be2d3d9583","isMergeCommit":false,"messageTitle":"Remove logic in buy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":44}}},{"hash":"4c2303aefffca513ebe4b66cd6dd40eeab19b4e6","isMergeCommit":false,"messageTitle":"Add test for buy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":21,"deletions":0}}},{"hash":"776e470027513c16414a84bb48d85aee3980cbfa","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":5}}}]},{"date":"2024-10-13","commitResults":[{"hash":"79de25ef295a073c4105cb173261d8a97d0a982a","isMergeCommit":false,"messageTitle":"Update test and logic of buy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":8},"test-code":{"insertions":76,"deletions":3}}}]},{"date":"2024-10-14","commitResults":[{"hash":"9c8917e6bc7aa5ac940022dcf2cbc776eca41108","isMergeCommit":false,"messageTitle":"Update buy command tests to work","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":8},"test-code":{"insertions":22,"deletions":14}}},{"hash":"6924a93703a44f217e3b40a11d3a69552394db58","isMergeCommit":false,"messageTitle":"Fix styling in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"ec0866ae302028f1dba5a07516ab833ef3055bf7","isMergeCommit":false,"messageTitle":"Fix styling in PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"a571a8dfff022ec75732e7ef4ba1cc0dcd973740","isMergeCommit":false,"messageTitle":"Update typical address book json","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"f0453d7ed2faeba8eb673185cad028a577ea7244","isMergeCommit":false,"messageTitle":"Add tests for equals method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":4}}}]},{"date":"2024-10-16","commitResults":[{"hash":"5404b86afb9b416f55e7e7a3ac0178875a5f9289","isMergeCommit":false,"messageTitle":"Fix success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"40ed216dcc176727341717c0c7fd4e8545bf0fa0","isMergeCommit":false,"messageTitle":"Update buy command test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]}],"triishaa":[{"date":"2024-10-02","commitResults":[{"hash":"5b75f015f9ba782965f0ac1339ebcc6968e13422","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"76493cf2e03cac291efe40a03249534753a4c92e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":1}}}]},{"date":"2024-10-08","commitResults":[{"hash":"823dccfed228f587bbd58c08edc70df065551420","isMergeCommit":false,"messageTitle":"Update find feature to support name and contact number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":20},"other":{"insertions":31,"deletions":31},"test-code":{"insertions":8,"deletions":4}}},{"hash":"339c6acf5513927d8c74ef6f4b2e85e69aade20a","isMergeCommit":false,"messageTitle":"Change style to pass CI Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"docs":{"insertions":1,"deletions":2}}}]},{"date":"2024-10-09","commitResults":[{"hash":"95cfd2ba1eae759345ef8c62eff656584112bf6d","isMergeCommit":false,"messageTitle":"Update Contact to PhoneNumber","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":27},"other":{"insertions":22,"deletions":22},"test-code":{"insertions":1,"deletions":1}}},{"hash":"71e66877478e97676d07a78b8270bac8d0b3165c","isMergeCommit":false,"messageTitle":"Change to pass CheckStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"e058c66936051d667ebe0fc592306fbec1d4ffb0","isMergeCommit":false,"messageTitle":"Update text to pass CI Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"947204c38ca161ae3e8568884c25cdcf8fda3470","isMergeCommit":false,"messageTitle":"Change indentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"9bfd3522657d5445a09f3c8fcb03ae35c7019836","isMergeCommit":false,"messageTitle":"Change in indentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f12849d6fd084b4d9d8379e550e03bab7e84dc33","isMergeCommit":false,"messageTitle":"Change indentation: No longer using Continuation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"8755fabc6310dc78a115b528ee563911db393f2e","isMergeCommit":false,"messageTitle":"Change indentation in FindCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"f5d5bd54ac42a119616f5bfcc2c14b5971dc7079","isMergeCommit":false,"messageTitle":"Update test cases to accomodate changes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":1}}},{"hash":"6b5f0c160b1fc10dba0226ba7ef3681d56e040ae","isMergeCommit":false,"messageTitle":"Change line length to pass CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"c1537c397076d4be0b75bf7d1cb944ef94079aeb","isMergeCommit":false,"messageTitle":"Change line length to pass CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7cf72c41dd20d912f6b41fa663138fe7d378abcd","isMergeCommit":false,"messageTitle":"Changed variable name from nameKeyword to phoneNumberKeywords","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"ITZXITZX":[{"date":"2024-10-01","commitResults":[{"hash":"fb12a633d9d2e51560fc816baad85b84e4e28629","isMergeCommit":false,"messageTitle":"Update Isaac AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"de5f9494ffb281e35d3c6d0c745859d2efcd77d7","isMergeCommit":true,"messageTitle":"Merge pull request #12 from xqtann/add-XinQuan-photo","messageBody":"Add Xin Quan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"a13bd3784483e30d84b4479cbd51ab08b32a622f","isMergeCommit":false,"messageTitle":"Update AboutUs for Isaac","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"01eb42d092b074e38a88b3b719fb2cedefe7e4d2","isMergeCommit":false,"messageTitle":"Update GitHub Actions build status badge link and codecov link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"dff86c9a3422f37d0f9c4cc1d4a8d08698425e10","isMergeCommit":false,"messageTitle":"Acknowledge original source of the code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"c51d73bb825736fc63f653901e08b7296b66afb8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F10-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b299622203b1b13845bfbc2570f8d107518a0df4","isMergeCommit":true,"messageTitle":"Pull origin/master to master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"18e9112e29652a2bdcf2b98a458b76405b219041","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update_README","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"847e307160b061c9552b84fe943ba0a0e53b8057","isMergeCommit":false,"messageTitle":"Add new Prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"ac671708c0c11b76789696d134be3993b3a61bc8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-new-prefixes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6f81c42419c7332b58125f436daed1c7038a12e","isMergeCommit":false,"messageTitle":"Update code differences with origin/master","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"f07e5e6fa4746ffc33d4d7561281d976a1f5e130","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-add-new-prefixes\u0027 of https://github.com/ITZXITZX/tp into branch-add-new-prefixes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"852d0195f1576075eb1b2e986fc8d28bb6965799","isMergeCommit":true,"messageTitle":"Merge pull request #56 from ITZXITZX/branch-add-new-prefixes","messageBody":"branch-add-new-prefixes","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"dfbcd500c8923f9179896cbb7acbb7ee12004761","isMergeCommit":true,"messageTitle":"Merge pull request #59 from triishaa/Update-Find-Command","messageBody":"Update find command","fileTypesAndContributionMap":{}},{"hash":"4f7e1098bec44d424a98657dea4413b873e6174a","isMergeCommit":true,"messageTitle":"Merge pull request #60 from xqtann/add-AddBuyCommandParser","messageBody":"Create AddBuyCommandParser with dummy return values","fileTypesAndContributionMap":{}},{"hash":"7a8cb3cb6e7e53733ff158f46598852601074f10","isMergeCommit":true,"messageTitle":"Merge pull request #57 from OrangeCatLoves/Add-Property-To-Sell-Command","messageBody":"Added new Properties parent classes and subclasses + Edited Command class for new AddPropertyToSellCommand","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"xqtann":{"docs":78,"functional-code":113,"test-code":183},"OrangeCatLoves":{"docs":55,"functional-code":785,"test-code":1168},"Potatoad88":{"docs":117,"functional-code":119,"test-code":164},"triishaa":{"docs":8,"functional-code":97,"test-code":155},"ITZXITZX":{"docs":12,"functional-code":5,"test-code":0}},"authorContributionVariance":{"xqtann":4422.5347,"OrangeCatLoves":82666.266,"Potatoad88":2935.138,"triishaa":4655.7656,"ITZXITZX":108.050964},"authorDisplayNameMap":{"xqtann":"CS2103T-F10-3 TAN ..QUAN","OrangeCatLoves":"CS2103T-F10-3 LOW .. BIN","Potatoad88":"CS2103T-F10-3 DYLA..FUNG","triishaa":"CS2103T-F10-3 PATO..ISHA","ITZXITZX":"CS2103T-F10-3 ISAA..XIAN"}} diff --git a/AY2425S1-CS2103T-F14a-1_tp_master/authorship.json b/AY2425S1-CS2103T-F14a-1_tp_master/authorship.json index c848204f..9fa5b30c 100644 --- a/AY2425S1-CS2103T-F14a-1_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14a-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14a-1/tp/graph/badge.svg?token\u003dXH80L1OD62)](https://codecov.io/gh/AY2425S1-CS2103T-F14a-1/tp)","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"teamotitan"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14a-1/tp/actions)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"# About the Project","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"**UGTeach** empowers undergraduate private tutors to efficiently manage payments, track student performance, and organize schedules. It streamlines tutoring operations, ensuring you stay organized and focused on helping your students achieve their academic goals.\u003cbr\u003e","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" **Example usages:**","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" * As a private tutor, you can add student\u0027s personal information and their tuition details","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" * As a private tutor, you can view the list of students you are currently tutoring","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" * As a private tutor, you can view the amount of money you have earned from tutoring","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":"# More Information","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" * It is **written in OOP fashion**. ","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" * It is **written in Java**, and has about 6 KLoC.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" * It is developed by a team of 5 from NUS Computer Science as a project for a module on software engineering (CS2103T). You can find more [about us here](https://ay2425s1-cs2103t-f14a-1.github.io/tp/AboutUs.html).","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":"* For the detailed documentation of this project, see the **[UG Teach Product Website](https://ay2425s1-cs2103t-f14a-1.github.io/tp/)**.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":"# Acknowledgement","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TY1Fan"},"content":" * This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-26","isFullCredit":false}],"authorContributionMap":{"Feng1231":17,"teamotitan":1,"TY1Fan":1,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":"### Chen Feng","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"\u003cimg src\u003d\"images/feng1231.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":"[[github](https://github.com/feng1231)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":"* Responsibilities: Scheduling and tracking","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"* In charge of Logic package","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":"### Dinh Duy Linh Dan","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"\u003cimg src\u003d\"images/denniedan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":"[[github](http://github.com/DennieDan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":"* Role: Testing","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"teamotitan"},"content":"### Timothy Tan","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"teamotitan"},"content":"\u003cimg src\u003d\"images/teamotitan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"teamotitan"},"content":"[[homepage](http://github.com/teamotitan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"teamotitan"},"content":"[[github](https://github.com/teamotitan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"teamotitan"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Soumyadip-cmd"},"content":"### Soumyadip Saha","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Soumyadip-cmd"},"content":"\u003cimg src\u003d\"images/soumyadip-cmd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Soumyadip-cmd"},"content":"[[github](http://github.com/soumyadip-cmd)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Soumyadip-cmd"},"content":"* Role: Developer, deadline and deliverables manager","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Soumyadip-cmd"},"content":"* Responsibilities: commons","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TY1Fan"},"content":"### Toh Yi Fan","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"TY1Fan"},"content":"\u003cimg src\u003d\"images/ty1fan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"TY1Fan"},"content":"[[github](https://github.com/TY1Fan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":"* Role: Code quality, and in charge of storage component","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":"* Responsibilities: Looks after code quality and storage component","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false}],"authorContributionMap":{"Feng1231":6,"teamotitan":5,"TY1Fan":5,"Soumyadip-cmd":6,"-":38,"DennieDan":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Feng1231"},"content":"* is a full time university student with fixed schedule","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Feng1231"},"content":"* is giving private tuition to a significant number of students","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Feng1231"},"content":"* has a need to manage a significant number of tutees\u0027 information","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Feng1231"},"content":"**Value proposition**: Empower undergraduate private tutors to efficiently manage payments, track student performance, and organize schedules using CLI.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Feng1231"},"content":"|----------|--------------------------------------------|-------------------------------|-------------------------------------------------------------------------|","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Feng1231"},"content":"| `* * *` | tutor | add a new student | keep track of my tutee\u0027s information |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Feng1231"},"content":"| `* * *` | user | delete an entry | remove entries that I no longer need |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Feng1231"},"content":"| `* * *` | private tutor | view all my students\u0027 details | have an overview of how many tutees I am managing |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Feng1231"},"content":"| `* * *` | tutor with many students | find a student by name | locate details of tutees without having to go through the entire list |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Feng1231"},"content":"| `* *` | busy undergraduate tutor | find students by date | locate details of tutees that has tuition on a specific date |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Feng1231"},"content":"| `* *` | new user | see sample entries | understand how the interface will look like with entries added |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"TY1Fan"},"content":"| `* *` | user | edit contact details | keep my information up-to-date |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"TY1Fan"},"content":"| `* *` | busy undergraduate tutor | check who owes me tuition fee | identify and remind them to pay |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"TY1Fan"},"content":"| `* *` | busy undergraduate tutor | be reminded of my tuitions for today | remember to teach for today (if any) |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"TY1Fan"},"content":"| `* *` | busy undergraduate tutor | have an overview of the tuition fee earned/ owed as of now | easily keep track of how much more I should receive |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"TY1Fan"},"content":"| `* *` | forgetful user | detect duplicates | avoid manually finding and deleting the duplicates |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"TY1Fan"},"content":"| `* *` | forgetful user | tag users with date and time of tuition | differentiate between different contacts |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Feng1231"},"content":"| `*` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Feng1231"},"content":"| `*` | user that types fast | be able to undo my actions | revert back if I have made a mistake |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"TY1Fan"},"content":"| `*` | busy undergraduate tutor | have information of both the children and his/her guardian | contact either of them |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"TY1Fan"},"content":"| `*` | tutor with many students | to know which guardian is associated with which children | know which student is under that guardian/ vice-versa |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Soumyadip-cmd"},"content":"(For all use cases below, the **System** is the `UGTeach` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC01 - Adding a student**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User enters command to create new student entry.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Soumyadip-cmd"},"content":"2. System displays success message and command line is cleared.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1a. System detects error in entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1a1-1a2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1b. System detects error in parameters.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1b1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1b2. User enters command with correct parameters.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1b1-1b2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC02 - Read all entries**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Soumyadip-cmd"},"content":"**MSS**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User enters command to view all entries.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Soumyadip-cmd"},"content":"2. System displays list with all entries to the user.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Soumyadip-cmd"},"content":" Use case ends.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Soumyadip-cmd"},"content":"**Extension**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1a. System detects error in entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1a1-1a2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1b. System detects the list is empty.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1b1. System shows an empty list.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC03 - Read total earnings**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Soumyadip-cmd"},"content":"**MSS**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User enters command to read total earnings and total money owed.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Soumyadip-cmd"},"content":"2. System displays total earnings and total money owed to the user.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Soumyadip-cmd"},"content":"**Extension**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1a. System detects error in entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1a1-1a2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC04 - Delete a student entry**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Soumyadip-cmd"},"content":"**MSS**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User requests to \u003cins\u003elist students(UC01)\u003c/ins\u003e.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Soumyadip-cmd"},"content":"2. User enters command to delete a specific student.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Soumyadip-cmd"},"content":"3. System displays list with specified student deleted from the list.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Soumyadip-cmd"},"content":" Use case ends.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Soumyadip-cmd"},"content":"**Extensions**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Soumyadip-cmd"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2a2. User enters command with new index.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 2a1-2a2 are repeated until index entered is correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 3.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Soumyadip-cmd"},"content":"* 2b. System detects error in format of entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2b1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2b2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 2b1-2b2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 3.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"DennieDan"},"content":"**Environment Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"DennieDan"},"content":"**Data Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"DennieDan"},"content":"1. All the data should be stored in human-editable files and must not be stored using DBMS. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"DennieDan"},"content":"2. Data should be saved permanently and not affected by any sudden accidents e.g., power outage, hardware breakdown.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"DennieDan"},"content":"**Performance Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"DennieDan"},"content":"1. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"DennieDan"},"content":"2. For any simple usage, the application should be able to respond within 2 seconds.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"DennieDan"},"content":"**Accessibility**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"DennieDan"},"content":"1. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"DennieDan"},"content":"2. The user interface should be easy to navigate and intuitive, with clear labels, large enough texts, and highlighted error messages. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"DennieDan"},"content":"3. The application should provide clear help sections for users, explaining how to use its features.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"DennieDan"},"content":"**Concurrency Control**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"DennieDan"},"content":"1. Should only be used by one person at a time, meaning it is designed for a single user and cannot be accessed or shared by multiple users simultaneously. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"DennieDan"},"content":"**Testability**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"DennieDan"},"content":"1. The software should not depend on any remote server and should be able to run at any time. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"DennieDan"},"content":"2. The application should be able to launch without an installer.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"DennieDan"},"content":"3. Features should be testable without any external installation or access e.g., remote APIs, audio players, user accounts, internet connection. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"DennieDan"},"content":"**Security Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"DennieDan"},"content":"1. The application is assumed to be used locally without creating any user account.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"DennieDan"},"content":"2. Data stored in human-editable files is assumed to be highly secured and not damaged.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"DennieDan"},"content":"**Maintainability Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"DennieDan"},"content":"1. The codebase should be modular and well-documented (i.e. JavaDoc, following abstraction and cohesion) to ensure ease of maintenance and updates.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"DennieDan"},"content":"2. The application must use a version control system to track changes and maintain multiple versions of the software.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"DennieDan"},"content":"**Logging**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"DennieDan"},"content":"1. Activity Logs: The system should log all user activity and critical events for security auditing and troubleshooting.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"DennieDan"},"content":"* **DBMS**: Database Management System, a software providing tools for structural data storage.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"teamotitan"},"content":"* **CLI**: Command-line interface where you interact with the system using your keyboard","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"teamotitan"},"content":"* **API**: Application Programming Interface, a set of programming code that enables data transmission between one software and another","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"teamotitan"},"content":"* **Abstraction and Cohesion**: Abstraction is hiding all but relevant data in order to reduce complexity and increase efficiency. Cohesion is the degree which elements belong together","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"teamotitan"},"content":"* **Version Control System**: Version control is the practice of tracking and managing changes to software code, and there are many version control systems such as Git, Apache Subversion etc","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Feng1231":13,"TY1Fan":8,"teamotitan":4,"Soumyadip-cmd":69,"-":379,"DennieDan":33}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eUG Teach\u003c/a\u003e","lastModifiedDate":"2024-09-13","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F14a-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"-":62,"DennieDan":1}},{"path":"docs/team/johndoe.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"Test","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"-":45}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"TY1Fan"},"content":" .append(\"; Schedule: \")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" .append(person.getSchedule())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" .append(\"; Subject: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" .append(person.getSubject())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" .append(\"; Fee: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" .append(person.getRate())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" .append(\"; Paid: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DennieDan"},"content":" .append(person.getPaid())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":" .append(\"; Owed: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" .append(person.getOwedAmount());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"TY1Fan":1,"-":49,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":" + PREFIX_SCHEDULE + \"SCHEDULE \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SUBJECT + \"SUBJECT \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" + PREFIX_RATE + \"FEE \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_PAID + \"PAID] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_OWED_AMOUNT + \"OWED] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SCHEDULE + \"Sunday-1000-1200 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SUBJECT + \"Biology \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" + PREFIX_RATE + \"3000 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" + PREFIX_PAID + \"6000 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" + PREFIX_OWED_AMOUNT + \"3000 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"TY1Fan":2,"Soumyadip-cmd":4,"-":80,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"[\" + PREFIX_SCHEDULE + \"SCHEDULE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_SUBJECT + \"SUBJECT] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_RATE + \"FEE] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_PAID + \"PAID] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_OWED_AMOUNT + \"OWED] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"TY1Fan"},"content":" + PREFIX_EMAIL + \"johndoe@example.com \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SCHEDULE + \"Saturday-1000-1200 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SUBJECT + \"Mathematics \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" + PREFIX_RATE + \"300 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" + PREFIX_PAID + \"600 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":" + PREFIX_OWED_AMOUNT + \"300 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"TY1Fan"},"content":" Schedule updatedSchedule \u003d editPersonDescriptor.getSchedule().orElse(personToEdit.getSchedule());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject updatedSubject \u003d editPersonDescriptor.getSubject().orElse(personToEdit.getSubject());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" Rate updatedRate \u003d editPersonDescriptor.getRate().orElse(personToEdit.getRate());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":" Paid updatedPaid \u003d editPersonDescriptor.getPaid().orElse(personToEdit.getPaid());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"DennieDan"},"content":" OwedAmount updatedOwedAmount \u003d editPersonDescriptor.getOwedAmount().orElse(personToEdit.getOwedAmount());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" return new Person(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"DennieDan"},"content":" updatedName, updatedPhone, updatedEmail, updatedAddress, updatedSchedule, updatedSubject, updatedRate,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" updatedPaid, updatedOwedAmount","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"TY1Fan"},"content":" private Schedule schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Soumyadip-cmd"},"content":" private Subject subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"DennieDan"},"content":" private Rate rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"DennieDan"},"content":" private Paid paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"DennieDan"},"content":" private OwedAmount owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"TY1Fan"},"content":" setSchedule(toCopy.schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Soumyadip-cmd"},"content":" setSubject(toCopy.subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"DennieDan"},"content":" setRate(toCopy.rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"DennieDan"},"content":" setPaid(toCopy.paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"DennieDan"},"content":" setOwedAmount(toCopy.owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"TY1Fan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"TY1Fan"},"content":" public void setSchedule(Schedule schedule) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"TY1Fan"},"content":" public Optional\u003cSchedule\u003e getSchedule() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"TY1Fan"},"content":" return Optional.ofNullable(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Soumyadip-cmd"},"content":" public void setSubject(Subject subject) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Soumyadip-cmd"},"content":" public Optional\u003cSubject\u003e getSubject() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Soumyadip-cmd"},"content":" return Optional.ofNullable(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"DennieDan"},"content":" public void setRate(Rate rate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"DennieDan"},"content":" public Optional\u003cRate\u003e getRate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"DennieDan"},"content":" return Optional.ofNullable(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"DennieDan"},"content":" public void setPaid(Paid paid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"DennieDan"},"content":" public Optional\u003cPaid\u003e getPaid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"DennieDan"},"content":" return Optional.ofNullable(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"DennieDan"},"content":" public void setOwedAmount(OwedAmount owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"DennieDan"},"content":" public Optional\u003cOwedAmount\u003e getOwedAmount() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"DennieDan"},"content":" return Optional.ofNullable(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 Objects.equals(schedule, otherEditPersonDescriptor.schedule)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 Objects.equals(subject, otherEditPersonDescriptor.subject)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 Objects.equals(rate, otherEditPersonDescriptor.rate)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 Objects.equals(paid, otherEditPersonDescriptor.paid)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 Objects.equals(owedAmount, otherEditPersonDescriptor.owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"TY1Fan"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Soumyadip-cmd"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"DennieDan"},"content":" .add(\"rate\", rate)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"DennieDan"},"content":" .add(\"paid\", paid)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"DennieDan"},"content":" .add(\"owedAmount\", owedAmount)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"TY1Fan":15,"Soumyadip-cmd":20,"-":213,"DennieDan":51}},{"path":"src/main/java/seedu/address/logic/commands/IncomeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"teamotitan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"teamotitan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"teamotitan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"teamotitan"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"teamotitan"},"content":" * Displays total money earned, as well as total money","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"teamotitan"},"content":" * owed","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"teamotitan"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"teamotitan"},"content":"public class IncomeCommand extends Command {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"teamotitan"},"content":" public static final String COMMAND_WORD \u003d \"income\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"teamotitan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Showed total money earned and owed\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"teamotitan"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"teamotitan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"teamotitan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"teamotitan"},"content":" int feesOwed \u003d 0;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"teamotitan"},"content":" int feesEarned \u003d 0;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"teamotitan"},"content":" //ObservableList\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"teamotitan"},"content":" //for (Person person: personList) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"teamotitan"},"content":" //fees_owed +\u003d person.getFeeOwed();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"teamotitan"},"content":" //fees_earned +\u003d person.getFeeEarned();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"teamotitan"},"content":" //}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"teamotitan"},"content":" return new CommandResult(\"Fees owed: \" + feesOwed + \", fees earned: \"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"teamotitan"},"content":" + feesEarned);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"teamotitan"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"teamotitan"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"teamotitan":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"TY1Fan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Soumyadip-cmd"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"TY1Fan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"TY1Fan"},"content":" Schedule schedule \u003d ParserUtil.parseSchedule(argMultimap.getValue(PREFIX_SCHEDULE).get());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject subject \u003d ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" Rate rate \u003d ParserUtil.parseRate(argMultimap.getValue(PREFIX_RATE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" Paid paid \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_PAID).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" paid \u003d ParserUtil.parsePaid(argMultimap.getValue(PREFIX_PAID).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":" paid \u003d new Paid();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_OWED_AMOUNT).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d ParserUtil.parseOwedAmount(argMultimap.getValue(PREFIX_OWED_AMOUNT).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d new OwedAmount();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" Person person \u003d new Person(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":6,"Soumyadip-cmd":4,"-":51,"DennieDan":22}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"teamotitan"},"content":"import seedu.address.logic.commands.IncomeCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"teamotitan"},"content":" case IncomeCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"teamotitan"},"content":" return new IncomeCommand();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"teamotitan":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TY1Fan"},"content":" public static final Prefix PREFIX_SCHEDULE \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TY1Fan"},"content":" public static final Prefix PREFIX_SUBJECT \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":" public static final Prefix PREFIX_RATE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":" public static final Prefix PREFIX_PAID \u003d new Prefix(\"paid/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":" public static final Prefix PREFIX_OWED_AMOUNT \u003d new Prefix(\"owed/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"TY1Fan":3,"-":13,"DennieDan":2}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"TY1Fan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" if (argMultimap.getValue(PREFIX_SCHEDULE).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" editPersonDescriptor.setSchedule(ParserUtil.parseSchedule(argMultimap.getValue(PREFIX_SCHEDULE).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Soumyadip-cmd"},"content":" if (argMultimap.getValue(PREFIX_SUBJECT).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Soumyadip-cmd"},"content":" editPersonDescriptor.setSubject(ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_RATE).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" editPersonDescriptor.setRate(ParserUtil.parseRate(argMultimap.getValue(PREFIX_RATE).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_PAID).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" editPersonDescriptor.setPaid(ParserUtil.parsePaid(argMultimap.getValue(PREFIX_PAID).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_OWED_AMOUNT).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" editPersonDescriptor.setOwedAmount(ParserUtil.parseOwedAmount(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":" argMultimap.getValue(PREFIX_OWED_AMOUNT).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"TY1Fan":5,"Soumyadip-cmd":4,"-":60,"DennieDan":16}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"TY1Fan"},"content":" * Parses a {@code String schedule} into an {@code Schedule}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"TY1Fan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"TY1Fan"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"TY1Fan"},"content":" * @throws ParseException if the given {@code schedule} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"TY1Fan"},"content":" public static Schedule parseSchedule(String schedule) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"TY1Fan"},"content":" requireNonNull(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"TY1Fan"},"content":" String trimmedSchedule \u003d schedule.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"TY1Fan"},"content":" if (!Schedule.isValidSchedule(trimmedSchedule)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"TY1Fan"},"content":" throw new ParseException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"TY1Fan"},"content":" return new Schedule(trimmedSchedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Soumyadip-cmd"},"content":" * Parses a {@code String subject} into an {@code Subject}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Soumyadip-cmd"},"content":" * @throws ParseException if the given {@code subject} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Soumyadip-cmd"},"content":" public static Subject parseSubject(String subject) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Soumyadip-cmd"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" String trimmedSubject \u003d subject.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":" if (!Subject.isValidSubject(trimmedSubject)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Soumyadip-cmd"},"content":" throw new ParseException(Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Soumyadip-cmd"},"content":" return new Subject(trimmedSubject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"DennieDan"},"content":" * Parses a {@code String rate} into a {@code Rate}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" * @throws ParseException if the given {@code rate} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" public static Rate parseRate(String rate) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" requireNonNull(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" String trimmedRate \u003d rate.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" if (!Rate.isValidRate(trimmedRate)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" throw new ParseException(Rate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"DennieDan"},"content":" return new Rate(trimmedRate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"DennieDan"},"content":" * Parses a {@code String paid} into a {@code Paid}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"DennieDan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"DennieDan"},"content":" * @throws ParseException if the given {@code paid} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"DennieDan"},"content":" public static Paid parsePaid(String paid) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"DennieDan"},"content":" requireNonNull(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"DennieDan"},"content":" String trimmedPaid \u003d paid.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"DennieDan"},"content":" if (!Paid.isValidPaid(trimmedPaid)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"DennieDan"},"content":" throw new ParseException(Paid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"DennieDan"},"content":" return new Paid(trimmedPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"DennieDan"},"content":" * Parses a {@code String owedAmount} into an {@code OwedAmount}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"DennieDan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"DennieDan"},"content":" * @throws ParseException if the {@code owedAmount} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"DennieDan"},"content":" public static OwedAmount parseOwedAmount(String owedAmount) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"DennieDan"},"content":" requireNonNull(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"DennieDan"},"content":" String trimmedOwedAmount \u003d owedAmount.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"DennieDan"},"content":" if (!OwedAmount.isValidOwedAmount(trimmedOwedAmount)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"DennieDan"},"content":" throw new ParseException(OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"DennieDan"},"content":" return new OwedAmount(trimmedOwedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"TY1Fan":15,"Soumyadip-cmd":10,"-":104,"DennieDan":42}},{"path":"src/main/java/seedu/address/model/person/Days.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":" * Represents a set of days in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"public enum Days {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid day.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidDay(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" Days.valueOf(test.toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":20}},{"path":"src/main/java/seedu/address/model/person/Fee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" * Represents a fee amount in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"public abstract class Fee {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"\"\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" should adhere to the following constraints:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" 1. is a non negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" 2. at most 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" \"\"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+(\\\\.[0-9]{1,2})?$\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" public final double value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Fee}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" * @param fee A valid fee.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" public Fee(String fee) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" requireNonNull(fee);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" checkArgument(isValidFee(fee), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" this.value \u003d Double.parseDouble(fee);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid fee.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidFee(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" return String.format(\"%.2f\", value);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Fee)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" Fee otherFee \u003d (Fee) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" return value \u003d\u003d otherFee.value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" return Double.hashCode(value);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":64}},{"path":"src/main/java/seedu/address/model/person/OwedAmount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DennieDan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DennieDan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DennieDan"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":" * Represents a Person\u0027s owed tuition fee in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"public class OwedAmount extends Fee {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Owed \" + Fee.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":" * Constructs a {@code OwedAmount}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":" * @param owedAmount A valid owed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":" public OwedAmount(String owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":" super(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":" * Constructs a {@code Amount}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":" public OwedAmount() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" super(\"0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" public static boolean isValidOwedAmount(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":" return Fee.isValidFee(test);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DennieDan"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":" if (!(other instanceof OwedAmount)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" OwedAmount otherOwedAmount \u003d (OwedAmount) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" return value \u003d\u003d otherOwedAmount.value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" return Objects.hash(value, OwedAmount.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"DennieDan":50}},{"path":"src/main/java/seedu/address/model/person/Paid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s paid tuition fee in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"public class Paid extends Fee {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Paid \" + Fee.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Paid}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" * @param paid A valid paid.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" public Paid(String paid) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" super(paid);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":" * Constructs a {@code Paid}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":" * with a default {@code value} of 0.0","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" public Paid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" super(\"0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidPaid(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" return Fee.isValidFee(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Paid)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" Paid otherPaid \u003d (Paid) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" return value \u003d\u003d otherPaid.value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" return Objects.hash(value, Paid.class);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":42,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"TY1Fan"},"content":" private final Schedule schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Soumyadip-cmd"},"content":" private final Subject subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" private final Rate rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" private final Paid paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" private final OwedAmount owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" public Person(Name name, Phone phone, Email email, Address address, Schedule schedule,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" Subject subject, Rate rate, Paid paid, OwedAmount owedAmount) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" requireAllNonNull(name, phone, email, address);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" public Schedule getSchedule() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" return schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Soumyadip-cmd"},"content":" public Subject getSubject() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Soumyadip-cmd"},"content":" return subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" public Rate getRate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" return rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" public Paid getPaid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" return paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":" public OwedAmount getOwedAmount() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DennieDan"},"content":" return owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 schedule.equals(otherPerson.schedule)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 subject.equals(otherPerson.subject)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 rate.equals(otherPerson.rate)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 paid.equals(otherPerson.paid)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 owedAmount.equals(otherPerson.owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" return Objects.hash(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"TY1Fan"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Soumyadip-cmd"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" .add(\"rate\", rate)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" .add(\"paid\", paid)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" .add(\"owedAmount\", owedAmount)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"TY1Fan":7,"Soumyadip-cmd":9,"-":99,"DennieDan":26}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TY1Fan"},"content":" \"Phone numbers should only contain numbers, start with 6, 8, or 9, and be exactly 8 digits long\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":" public static final String VALIDATION_REGEX \u003d \"^[689]\\\\d{7}$\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"TY1Fan":2,"-":59}},{"path":"src/main/java/seedu/address/model/person/Rate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s tuition fee rate in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"public class Rate extends Fee {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Rate \" + Fee.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Rate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" * @param rate A valid rate.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" public Rate(String rate) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" super(rate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidRate(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" return Fee.isValidFee(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" return super.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Rate)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" Rate otherRate \u003d (Rate) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" return value \u003d\u003d otherRate.value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" return Objects.hash(value, Rate.class);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":48,"DennieDan":1}},{"path":"src/main/java/seedu/address/model/person/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.model.person.Days.isValidDay;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s lesson time in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSchedule(String)}","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":"public class Schedule {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"\"\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" Schedule should be in the format of Day-startTime-endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" and adhere to the following constraints:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" 1. Day should be a valid day of the week:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" 2. startTime and endTime should be in the format of HHMM","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" 3. startTime should be strictly before endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" 4. startTime and endTime should be within the range of 0000 to 2359","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" There should be no whitespace in between the day, startTime and endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" \"\"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" public static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" public final Days dayValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" public final LocalTime startTimeValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" public final LocalTime endTimeValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"TY1Fan"},"content":" public final String value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Time}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" * @param time A valid time.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" public Schedule(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" requireNonNull(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" checkArgument(isValidSchedule(time), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" this.value \u003d time;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" this.dayValue \u003d getDayComponent(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" this.startTimeValue \u003d getStartTimeComponent(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" this.endTimeValue \u003d getEndTimeComponent(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid Schedule.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidSchedule(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d test.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" if (split.length !\u003d 3) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" String day \u003d split[0];","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" String startTime \u003d split[1];","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" String endTime \u003d split[2];","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" boolean isValidDayFormat \u003d isValidDay(day);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" boolean isValidTimeFormat \u003d isValidTime(startTime) \u0026\u0026 isValidTime(endTime);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" boolean isValidTimeRange \u003d isValidTimeRange(startTime, endTime);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" return isValidDayFormat \u0026\u0026 isValidTimeFormat \u0026\u0026 isValidTimeRange;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" * Returns true if the time string is a valid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidTime(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" if (time.length() !\u003d 4) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":" // disallow 2400","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" if (time.equals(\"2400\")) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" LocalTime.parse(time, TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Feng1231"},"content":" * Returns true if startTime is before endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidTimeRange(String startTime, String endTime) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Feng1231"},"content":" if (!isValidTime(startTime) || !isValidTime(endTime)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Feng1231"},"content":" LocalTime start \u003d LocalTime.parse(startTime, TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Feng1231"},"content":" LocalTime end \u003d LocalTime.parse(endTime, TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Feng1231"},"content":" return start.isBefore(end);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"DennieDan"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Feng1231"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Feng1231"},"content":" return dayValue + \" \" + startTimeValue + \" - \" + endTimeValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Feng1231"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Feng1231"},"content":" return dayValue.equals(otherSchedule.dayValue)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Feng1231"},"content":" \u0026\u0026 startTimeValue.equals(otherSchedule.startTimeValue)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Feng1231"},"content":" \u0026\u0026 endTimeValue.equals(otherSchedule.endTimeValue);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Feng1231"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Feng1231"},"content":" return Objects.hash(dayValue, startTimeValue, endTimeValue);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Feng1231"},"content":" private Days getDayComponent(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d time.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Feng1231"},"content":" return Days.valueOf(split[0].toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Feng1231"},"content":" private LocalTime getStartTimeComponent(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d time.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Feng1231"},"content":" return LocalTime.parse(split[1], TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Feng1231"},"content":" private LocalTime getEndTimeComponent(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d time.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Feng1231"},"content":" return LocalTime.parse(split[2], TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":146,"TY1Fan":3,"DennieDan":1}},{"path":"src/main/java/seedu/address/model/person/Subject.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s subject in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"public class Subject {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Subjects should only be: \"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"economics / literature / music / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"biology / chemistry /science / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"english / chinese / malay / tamil / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"math / history / geography / physics / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"GP \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" public final Subjects value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Subject}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" public Subject(String subject) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" checkArgument(isValidSubject(subject), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" value \u003d Subjects.valueOf(subject.toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid subject.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidSubject(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" Subjects.valueOf(test.toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Subject)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" Subject otherSubject \u003d (Subject) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" return value.equals(otherSubject.value);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Soumyadip-cmd"},"content":" * Returns string value of enumerated subject.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Soumyadip-cmd"},"content":" * @return String value of subject.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Soumyadip-cmd"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Soumyadip-cmd"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Soumyadip-cmd"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Soumyadip-cmd"},"content":" return value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":61,"Soumyadip-cmd":14}},{"path":"src/main/java/seedu/address/model/person/Subjects.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":" * Represents a set of values that a Person\u0027s subject","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":" * can take in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"public enum Subjects {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":" ECONOMICS, LITERATURE, MUSIC,","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" BIOLOGY, CHEMISTRY, SCIENCE,","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" ENGLISH, CHINESE, MALAY, TAMIL,","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Soumyadip-cmd"},"content":" MATHEMATICS, HISTORY, GEOGRAPHY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":" PHYSICS, GP","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":11,"Soumyadip-cmd":2}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Schedule(\"Tuesday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Mathematics\"), new Rate(\"120.50\"), new Paid(), new OwedAmount(\"120.50\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Schedule(\"Wednesday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Mathematics\"), new Rate(\"400.0\"), new Paid(\"800.00\"), new OwedAmount(\"400.0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Schedule(\"Wednesday-1600-1800\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Physics\"), new Rate(\"380.22\"), new Paid(\"1140.66\"), new OwedAmount(\"0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Schedule(\"Thursday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Chemistry\"), new Rate(\"90.15\"), new Paid(\"450.75\"), new OwedAmount(\"180.30\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Schedule(\"Thursday-1600-1800\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Physics\"), new Rate(\"400\"), new Paid(\"400\"), new OwedAmount(\"0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Schedule(\"Friday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Economics\"), new Rate(\"550.15\"), new Paid(), new OwedAmount(\"0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"Soumyadip-cmd":7,"-":35,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"TY1Fan"},"content":" private final String schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Soumyadip-cmd"},"content":" private final String subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" private final String rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" private final String paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" private final String owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Soumyadip-cmd"},"content":" @JsonProperty(\"schedule\") String schedule, @JsonProperty(\"subject\") String subject,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" @JsonProperty(\"rate\") String rate, @JsonProperty(\"paid\") String paid,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" @JsonProperty(\"owedAmount\") String owedAmount) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" schedule \u003d source.getSchedule().value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Soumyadip-cmd"},"content":" subject \u003d source.getSubject().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" rate \u003d source.getRate().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" paid \u003d source.getPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d source.getOwedAmount().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":" if (schedule \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"TY1Fan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"TY1Fan"},"content":" Schedule.class.getSimpleName()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"TY1Fan"},"content":" if (!Schedule.isValidSchedule(schedule)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"TY1Fan"},"content":" throw new IllegalValueException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"TY1Fan"},"content":" final Schedule modelSchedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Soumyadip-cmd"},"content":" if (subject \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Soumyadip-cmd"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":" if (!Subject.isValidSubject(subject)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Soumyadip-cmd"},"content":" throw new IllegalValueException(Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Soumyadip-cmd"},"content":" final Subject modelSubject \u003d new Subject(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"DennieDan"},"content":" if (rate \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Rate.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" if (!Rate.isValidRate(rate)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(Rate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":" final Rate modelRate \u003d new Rate(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" if (paid \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Paid.class.getSimpleName()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" if (!Paid.isValidPaid(paid)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(Paid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"DennieDan"},"content":" final Paid modelPaid \u003d new Paid(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"DennieDan"},"content":" if (owedAmount \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"DennieDan"},"content":" OwedAmount.class.getSimpleName()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"DennieDan"},"content":" if (!OwedAmount.isValidOwedAmount(owedAmount)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"DennieDan"},"content":" final OwedAmount modelOwedAmount \u003d new OwedAmount(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"DennieDan"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelSchedule,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"DennieDan"},"content":" modelSubject, modelRate, modelPaid, modelOwedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"TY1Fan":13,"Soumyadip-cmd":14,"-":88,"DennieDan":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"// import java.util.Comparator;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" // used to display blue color tags.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" // This is the code to show blue tags. I will comment it out instead of deleting it.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" /*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Feng1231":7,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PAID_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + SCHEDULE_DESC_AMY + SUBJECT_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"DennieDan"},"content":" + PAID_DESC_AMY + OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Feng1231"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"Soumyadip-cmd":1,"-":173,"DennieDan":6}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_PHONE_AMY \u003d \"91111111\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_PHONE_BOB \u003d \"82222222\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_SCHEDULE_AMY \u003d \"Sunday-1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_SCHEDULE_BOB \u003d \"Monday-1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String VALID_SUBJECT_AMY \u003d \"Mathematics\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String VALID_SUBJECT_BOB \u003d \"Mathematics\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_RATE_AMY \u003d \"250.00\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_RATE_BOB \u003d \"300.25\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_PAID_AMY \u003d \"750.00\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_PAID_BOB \u003d \"0.0\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_OWED_AMOUNT_AMY \u003d \"500.00\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_OWED_AMOUNT_BOB \u003d \"300.25\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"TY1Fan"},"content":" public static final String SCHEDULE_DESC_AMY \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" public static final String SCHEDULE_DESC_BOB \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String SUBJECT_DESC_AMY \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String SUBJECT_DESC_BOB \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" public static final String RATE_DESC_AMY \u003d \" \" + PREFIX_RATE + VALID_RATE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" public static final String RATE_DESC_BOB \u003d \" \" + PREFIX_RATE + VALID_RATE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" public static final String PAID_DESC_AMY \u003d \" \" + PREFIX_PAID + VALID_PAID_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" public static final String PAID_DESC_BOB \u003d \" \" + PREFIX_PAID + VALID_PAID_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" public static final String OWED_AMOUNT_DESC_AMY \u003d \" \" + PREFIX_OWED_AMOUNT + VALID_OWED_AMOUNT_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" public static final String OWED_AMOUNT_DESC_BOB \u003d \" \" + PREFIX_OWED_AMOUNT + VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"TY1Fan"},"content":" public static final String INVALID_SCHEDULE_DESC \u003d \" \" + PREFIX_SCHEDULE + \"Sunday 1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String INVALID_SUBJECT_DESC \u003d \" \" + PREFIX_SUBJECT + \"Physical education\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DennieDan"},"content":" public static final String INVALID_RATE_DESC \u003d \" \" + PREFIX_RATE + \"12.398\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DennieDan"},"content":" public static final String INVALID_PAID_DESC \u003d \" \" + PREFIX_PAID + \" \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DennieDan"},"content":" public static final String INVALID_OWED_AMOUNT_DESC \u003d \" \" + PREFIX_OWED_AMOUNT + \"19.000\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DennieDan"},"content":" .withSchedule(VALID_SCHEDULE_AMY).withSubject(VALID_SUBJECT_AMY).withRate(VALID_RATE_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DennieDan"},"content":" .withPaid(VALID_PAID_AMY).withOwedAmount(VALID_OWED_AMOUNT_AMY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DennieDan"},"content":" .withSchedule(VALID_SCHEDULE_BOB).withSubject(VALID_SUBJECT_BOB).withRate(VALID_RATE_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DennieDan"},"content":" .withPaid(VALID_PAID_BOB).withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":8,"Soumyadip-cmd":6,"-":118,"DennieDan":22}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" .build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", schedule\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" + editPersonDescriptor.getSchedule().orElse(null) + \", subject\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Soumyadip-cmd"},"content":" + editPersonDescriptor.getSubject().orElse(null) + \", rate\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" + editPersonDescriptor.getRate().orElse(null) + \", paid\u003d\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" + editPersonDescriptor.getPaid().orElse(null) + \", owedAmount\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" + editPersonDescriptor.getOwedAmount().orElse(null) + \"}\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"Soumyadip-cmd":2,"-":64,"DennieDan":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_OWED_AMOUNT_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PAID_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RATE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SCHEDULE_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SUBJECT_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PAID_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PAID_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DennieDan"},"content":" + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB + PAID_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Soumyadip-cmd"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" /*public void parse_repeatedNonTagValue_failure() {*/","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DennieDan"},"content":" + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB + PAID_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"TY1Fan"},"content":" // multiple schedules","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, SCHEDULE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SCHEDULE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"DennieDan"},"content":" // multiple rates","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, RATE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RATE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"DennieDan"},"content":" // multiple owedAmounts","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, OWED_AMOUNT_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Soumyadip-cmd"},"content":" // multiple subjects","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, SUBJECT_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SUBJECT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" // multiple payment_amounts","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, PAID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PAID));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" + SCHEDULE_DESC_AMY + SUBJECT_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" + PAID_DESC_AMY + OWED_AMOUNT_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":" PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"TY1Fan"},"content":" // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, INVALID_SCHEDULE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SCHEDULE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Soumyadip-cmd"},"content":" // invalid subject","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, INVALID_SUBJECT_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Soumyadip-cmd"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SUBJECT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"DennieDan"},"content":" // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, INVALID_RATE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RATE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"DennieDan"},"content":" // invalid paid","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, INVALID_PAID_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PAID));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"DennieDan"},"content":" // invalid owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, INVALID_OWED_AMOUNT_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"TY1Fan"},"content":" // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SCHEDULE_DESC,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SCHEDULE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Soumyadip-cmd"},"content":" // invalid subject","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SUBJECT_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Soumyadip-cmd"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SUBJECT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"DennieDan"},"content":" // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_RATE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RATE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"DennieDan"},"content":" // invalid paid","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PAID_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PAID));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"DennieDan"},"content":" // invalid owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_OWED_AMOUNT_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Feng1231"},"content":" // seems like this is for tags","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"DennieDan"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"TY1Fan"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"DennieDan"},"content":" + SCHEDULE_DESC_AMY + SUBJECT_DESC_AMY + RATE_DESC_AMY + PAID_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"DennieDan"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"DennieDan"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB + PAID_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Soumyadip-cmd"},"content":" // missing schedule prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Soumyadip-cmd"},"content":" + VALID_SCHEDULE_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Soumyadip-cmd"},"content":" // missing subject prefix","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + VALID_SUBJECT_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"DennieDan"},"content":" // missing rate prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + VALID_RATE_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"Soumyadip-cmd"},"content":" + VALID_SCHEDULE_BOB + VALID_SUBJECT_BOB + VALID_RATE_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Soumyadip-cmd"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"Soumyadip-cmd"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"DennieDan"},"content":" + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Soumyadip-cmd"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Soumyadip-cmd"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"TY1Fan"},"content":" // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + INVALID_SCHEDULE_DESC + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Soumyadip-cmd"},"content":" Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Soumyadip-cmd"},"content":" // invalid subject","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + INVALID_SUBJECT_DESC + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"DennieDan"},"content":" // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Soumyadip-cmd"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"DennieDan"},"content":" + INVALID_RATE_DESC, Rate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"DennieDan"},"content":" // invalid paid","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"DennieDan"},"content":" + RATE_DESC_BOB + INVALID_PAID_DESC, Paid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"DennieDan"},"content":" // invalid owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"DennieDan"},"content":" + RATE_DESC_BOB + INVALID_OWED_AMOUNT_DESC, OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Feng1231":10,"TY1Fan":31,"Soumyadip-cmd":43,"-":147,"DennieDan":94}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" /* comment out for tag, in case it is needed in the future","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":150}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_OWED_AMOUNT_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RATE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SCHEDULE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, \"1\" + INVALID_SCHEDULE_DESC, Schedule.MESSAGE_CONSTRAINTS); // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, \"1\" + INVALID_RATE_DESC, Rate.MESSAGE_CONSTRAINTS); // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, \"1\" + INVALID_OWED_AMOUNT_DESC, OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"DennieDan"},"content":" + VALID_PHONE_AMY + VALID_SCHEDULE_AMY + VALID_RATE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Feng1231"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + SCHEDULE_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"DennieDan"},"content":" .withSchedule(VALID_SCHEDULE_AMY).withRate(VALID_RATE_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"DennieDan"},"content":" .withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"TY1Fan"},"content":" // schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"TY1Fan"},"content":" userInput \u003d targetIndex.getOneBased() + SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"TY1Fan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSchedule(VALID_SCHEDULE_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"TY1Fan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"TY1Fan"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"DennieDan"},"content":" // rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"DennieDan"},"content":" userInput \u003d targetIndex.getOneBased() + RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"DennieDan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRate(VALID_RATE_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"DennieDan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"DennieDan"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"DennieDan"},"content":" // owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"DennieDan"},"content":" userInput \u003d targetIndex.getOneBased() + OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"DennieDan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withOwedAmount(VALID_OWED_AMOUNT_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"DennieDan"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"DennieDan"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + SCHEDULE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"DennieDan"},"content":" + RATE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"DennieDan"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + SCHEDULE_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"DennieDan"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + SCHEDULE_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_RATE, PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"DennieDan"},"content":" + INVALID_SCHEDULE_DESC + INVALID_RATE_DESC + INVALID_OWED_AMOUNT_DESC + INVALID_PHONE_DESC","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"DennieDan"},"content":" + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + INVALID_SCHEDULE_DESC + INVALID_RATE_DESC","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"DennieDan"},"content":" + INVALID_OWED_AMOUNT_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_RATE, PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"TY1Fan":8,"-":166,"DennieDan":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TY1Fan"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"-":140}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":105}},{"path":"src/test/java/seedu/address/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" Address sameAddress \u003d new Address(\"Valid Address\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" Address differentAddress \u003d new Address(\"Other Valid Address\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" assertEquals(address.hashCode(), sameAddress.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(address.hashCode(), differentAddress.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":12,"-":56}},{"path":"src/test/java/seedu/address/model/person/DaysTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"class DaysTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" public void isValidDay_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" // null day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Days.isValidDay(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" public void isValidDay_invalidDay_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" // invalid day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"mon\")); // short form","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"monday1\")); // with number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"monday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" tuesday\")); // with leading space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"wednesday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" thursday\")); // with leading space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"friday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" saturday\")); // with leading space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"sunday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"monday tuesday\")); // multiple days","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" public void isValidDay_validDay_returnsTrue() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" // valid day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"MONDAY\")); // uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"TUESDAY\")); // uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"WEDNESDAY\")); // uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"thursday\")); // lowercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"fridAy\")); // mixedcase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":43}},{"path":"src/test/java/seedu/address/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Feng1231"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Feng1231"},"content":" Email sameEmail \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Feng1231"},"content":" Email differentEmail \u003d new Email(\"other.valid@email\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Feng1231"},"content":" assertEquals(email.hashCode(), sameEmail.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(email.hashCode(), differentEmail.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":12,"-":88}},{"path":"src/test/java/seedu/address/model/person/FeeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"public class FeeTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e generateFee(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" public void constructor_invalidFee_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" String invalidFee \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e generateFee(invalidFee));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" public void isValidFee() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" // null fee","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Fee.isValidFee(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" // invalid fees","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"-1.23\")); // negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" // valid fees","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"1\")); // 0 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"0\")); // 3 digits","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" public void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" Fee fee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.23\", fee.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" Fee fee2 \u003d generateFee(\"1.0\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.00\", fee2.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" Fee fee3 \u003d generateFee(\"0\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"0.00\", fee3.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" public void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" Fee fee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" Fee sameFee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" Fee differentFee \u003d generateFee(\"2.34\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" assertTrue(fee.equals(sameFee));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" assertTrue(fee.equals(fee));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" assertFalse(fee.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertFalse(fee.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" assertFalse(fee.equals(differentFee));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" Fee fee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" Fee sameFee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":" Fee differentFee \u003d generateFee(\"2.34\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" assertEquals(fee.hashCode(), sameFee.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(fee.hashCode(), differentFee.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" public Fee generateFee(String fee) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" return new Fee(fee) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" };","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":91}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"TY1Fan"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"91234567\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"-":84}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" Name sameName \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" Name differentName \u003d new Name(\"Other Valid Name\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertEquals(name.hashCode(), sameName.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(name.hashCode(), differentName.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":12,"-":60}},{"path":"src/test/java/seedu/address/model/person/OwedAmountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DennieDan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"public class OwedAmountTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":" assertThrows(NullPointerException.class, () -\u003e new OwedAmount(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":" public void constructor_invalidOwed_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":" String invalidOwedAmount \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new OwedAmount(invalidOwedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" public void isValidOwed() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" // null owed","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" assertThrows(NullPointerException.class, () -\u003e OwedAmount.isValidOwedAmount(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":" // invalid oweds","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"\")); // empty string","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\" \")); // spaces only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"-1.23\")); // negative number","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" // valid oweds","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"1\")); // 0 decimal places","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"0\")); // 3 digits","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DennieDan"},"content":" public void toStringTest() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.23\", owedAmount.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount2 \u003d new OwedAmount(\"1.0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.00\", owedAmount2.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount3 \u003d new OwedAmount(\"0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"0.00\", owedAmount3.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DennieDan"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" OwedAmount sameOwedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DennieDan"},"content":" OwedAmount differentOwedAmount \u003d new OwedAmount(\"1.24\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" assertTrue(owedAmount.equals(sameOwedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" assertTrue(owedAmount.equals(owedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" assertFalse(owedAmount.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" assertFalse(owedAmount.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" assertFalse(owedAmount.equals(differentOwedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DennieDan"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DennieDan"},"content":" OwedAmount sameOwedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DennieDan"},"content":" OwedAmount differentOwedAmount \u003d new OwedAmount(\"1.24\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DennieDan"},"content":" assertEquals(owedAmount.hashCode(), sameOwedAmount.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DennieDan"},"content":" assertNotEquals(owedAmount.hashCode(), differentOwedAmount.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DennieDan"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"DennieDan":87}},{"path":"src/test/java/seedu/address/model/person/PaidTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"public class PaidTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Paid(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" void constructor_invalidPaid_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" String invalidPaid \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Paid(invalidPaid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" void isValidPaid() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" // null paid","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Paid.isValidPaid(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" // invalid paids","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"-1.23\")); // negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" // valid paids","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"1\")); // 0 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"0\")); // 3 digits","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" Paid paid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.23\", paid.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" Paid paid2 \u003d new Paid(\"1.0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.00\", paid2.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" Paid paid3 \u003d new Paid(\"0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"0.00\", paid3.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" Paid paid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" Paid samePaid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" Paid differentPaid \u003d new Paid(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" assertTrue(paid.equals(samePaid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" assertTrue(paid.equals(paid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.equals(differentPaid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" Paid paid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" Paid samePaid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":" Paid differentPaid \u003d new Paid(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" assertTrue(paid.hashCode() \u003d\u003d samePaid.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.hashCode() \u003d\u003d differentPaid.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":88}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" /* seems like it is for tag","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" // same name and phone, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" .withAddress(VALID_ADDRESS_BOB).withSchedule(VALID_SCHEDULE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" .withSubject(VALID_SUBJECT_BOB).withRate(VALID_RATE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" .withAddress(VALID_ADDRESS_BOB).withSchedule(VALID_SCHEDULE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" .withSubject(VALID_SUBJECT_BOB).withRate(VALID_RATE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" // Note for Yi Fan: when you update the case-insensitive, this should return true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Feng1231"},"content":" // different schedule -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Feng1231"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSchedule(VALID_SCHEDULE_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Feng1231"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Soumyadip-cmd"},"content":" // different subject -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Soumyadip-cmd"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSubject(VALID_SUBJECT_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Soumyadip-cmd"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Soumyadip-cmd"},"content":" // different rate -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Soumyadip-cmd"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRate(VALID_RATE_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DennieDan"},"content":" // different schedule -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"DennieDan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSchedule(VALID_SCHEDULE_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" // different owedAmount -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"TY1Fan"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Soumyadip-cmd"},"content":" + \", schedule\u003d\" + ALICE.getSchedule() + \", subject\u003d\" + ALICE.getSubject()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"DennieDan"},"content":" + \", rate\u003d\" + ALICE.getRate() + \", paid\u003d\" + ALICE.getPaid()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"DennieDan"},"content":" + \", owedAmount\u003d\" + ALICE.getOwedAmount() + \"}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Feng1231"},"content":" // same attributes -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Feng1231"},"content":" Person sameAlice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Feng1231"},"content":" assertEquals(ALICE.hashCode(), sameAlice.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Feng1231"},"content":" // different attributes -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Feng1231"},"content":" Person differentPhone \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Feng1231"},"content":" Person differentEmail \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Feng1231"},"content":" Person differentAddress \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Feng1231"},"content":" Person differentName \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Feng1231"},"content":" Person differentPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentPhone.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentEmail.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentAddress.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentName.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentPerson.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Feng1231":29,"TY1Fan":1,"Soumyadip-cmd":10,"-":91,"DennieDan":20}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 8 numbers","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"TY1Fan"},"content":" assertFalse(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"TY1Fan"},"content":" assertTrue(Phone.isValidPhone(\"63121534\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" assertTrue(Phone.isValidPhone(\"83121534\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" Phone phone \u003d new Phone(\"99999999\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"TY1Fan"},"content":" assertTrue(phone.equals(new Phone(\"99999999\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" assertFalse(phone.equals(new Phone(\"99555555\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" Phone phone \u003d new Phone(\"91234567\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" Phone samePhone \u003d new Phone(\"91234567\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" Phone differentPhone \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertEquals(phone.hashCode(), samePhone.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(phone.hashCode(), differentPhone.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":11,"TY1Fan":7,"-":55}},{"path":"src/test/java/seedu/address/model/person/RateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"public class RateTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Rate(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" void constructor_invalidRate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" String invalidRate \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Rate(invalidRate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" void isValidRate() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" // null rate","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Rate.isValidRate(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" // invalid rates","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"-1.23\")); // negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" // valid rates","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"1\")); // 0 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"0\")); // 3 digits","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" Rate rate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.23\", rate.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" Rate rate2 \u003d new Rate(\"1.0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.00\", rate2.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" Rate rate3 \u003d new Rate(\"0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"0.00\", rate3.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" Rate rate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" Rate sameRate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" Rate differentRate \u003d new Rate(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" assertTrue(rate.equals(sameRate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" assertTrue(rate.equals(rate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" assertFalse(rate.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" assertFalse(rate.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":" assertFalse(rate.equals(differentRate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":" Rate rate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":" Rate sameRate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" Rate differentRate \u003d new Rate(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" assertEquals(rate.hashCode(), sameRate.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(rate.hashCode(), differentRate.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":87,"DennieDan":3}},{"path":"src/test/java/seedu/address/model/person/ScheduleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"class ScheduleTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Schedule(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" public void constructor_invalidSchedule_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" String invalidSchedule \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Schedule(invalidSchedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" // null schedule","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidSchedule(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_invalidFormat_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" // invalid schedules","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday\")); // single day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1200-1300-1400\")); // extra time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_invalidDay_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" // invalid day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"mon-1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday1-1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" // extra space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday -1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\" monday-1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\" monday -1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_invalidTime_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":" // invalid time range","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-1200\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1200-130\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-1360\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-2400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" // extra space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300- 1400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300 -1400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday- 1300 - 1400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_validSchedule_returnsTrue() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidSchedule(\"monday-1200-1300\")); // single day and time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidSchedule(\"FRIDAY-2350-2359\")); // day in uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidSchedule(\"satUrDay-0000-2359\")); // day in mixed case","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" public void isValidTime() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" // null time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidTime(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":" // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"123\")); // wrong length","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"12345\")); // wrong length","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"12:34\")); // wrong format","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"2400\")); // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"2360\")); // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" // valid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidTime(\"0000\")); // minimum time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidTime(\"2359\")); // maximum time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Feng1231"},"content":" public void isValidTimeRange() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Feng1231"},"content":" // null time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidTimeRange(null, null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Feng1231"},"content":" // invalid time range","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTimeRange(\"1200\", \"1200\")); // same time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTimeRange(\"1300\", \"1200\")); // start time after end time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Feng1231"},"content":" // valid time range","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidTimeRange(\"1200\", \"1300\")); // start time before end time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Feng1231"},"content":" public void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Feng1231"},"content":" Schedule schedule \u003d new Schedule(\"monday-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Feng1231"},"content":" Schedule sameSchedule \u003d new Schedule(\"monDay-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Feng1231"},"content":" Schedule differentSchedule \u003d new Schedule(\"monday-1300-1400\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Feng1231"},"content":" assertTrue(schedule.equals(sameSchedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Feng1231"},"content":" assertTrue(schedule.equals(schedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Feng1231"},"content":" assertFalse(schedule.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Feng1231"},"content":" assertFalse(schedule.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Feng1231"},"content":" assertFalse(schedule.equals(differentSchedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Feng1231"},"content":" public void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Feng1231"},"content":" Schedule schedule \u003d new Schedule(\"monday-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"MONDAY 12:00 - 13:00\", schedule.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Feng1231"},"content":" schedule \u003d new Schedule(\"FRIDaY-0000-2359\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"FRIDAY 00:00 - 23:59\", schedule.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Feng1231"},"content":" Schedule schedule \u003d new Schedule(\"monday-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Feng1231"},"content":" Schedule sameSchedule \u003d new Schedule(\"monDay-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Feng1231"},"content":" Schedule differentSchedule \u003d new Schedule(\"monday-1300-1400\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Feng1231"},"content":" assertEquals(schedule.hashCode(), sameSchedule.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(schedule.hashCode(), differentSchedule.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":146}},{"path":"src/test/java/seedu/address/model/person/SubjectTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"class SubjectTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Subject(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" public void constructor_invalidSubject_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" String invalidSubject \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Subject(invalidSubject));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" public void isValidSubject() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" // null subject","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Subject.isValidSubject(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" // invalid subjects","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Subject.isValidSubject(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" assertFalse(Subject.isValidSubject(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" assertFalse(Subject.isValidSubject(\"invalid\")); // invalid subject","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Soumyadip-cmd"},"content":" assertFalse(Subject.isValidSubject(\"Physical education\")); // subject not supported","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" // valid subjects","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Subject.isValidSubject(\"economics\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" assertTrue(Subject.isValidSubject(\"Biology\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" assertTrue(Subject.isValidSubject(\"eNglish\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Soumyadip-cmd"},"content":" assertTrue(Subject.isValidSubject(\"mathematics\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" public void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" Subject subject \u003d new Subject(\"economics\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" assertTrue(subject.equals(new Subject(\"economics\")));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":" assertTrue(subject.equals(subject));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" assertFalse(subject.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" assertFalse(subject.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" assertFalse(subject.equals(new Subject(\"biology\")));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" Subject subject \u003d new Subject(\"economics\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" Subject otherSubject \u003d new Subject(\"economics\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" Subject differentSubject \u003d new Subject(\"biology\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertEquals(subject.hashCode(), subject.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" assertEquals(subject.hashCode(), otherSubject.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(subject.hashCode(), differentSubject.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toString_validSubject_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Soumyadip-cmd"},"content":" // Test case for a valid subject","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject subject \u003d new Subject(\"mathematics\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Soumyadip-cmd"},"content":" assertEquals(\"MATHEMATICS\", subject.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject subject2 \u003d new Subject(\"biology\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Soumyadip-cmd"},"content":" assertEquals(\"BIOLOGY\", subject2.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":74,"Soumyadip-cmd":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":172}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TY1Fan"},"content":" private static final String INVALID_SCHEDULE \u003d \"Anyday 7pm-9pm\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Soumyadip-cmd"},"content":" private static final String INVALID_SUBJECT \u003d \"PHYSICAL EDUCATION\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":" private static final String INVALID_RATE \u003d \"123.23/h\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":" private static final String INVALID_PAID \u003d \" \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":" private static final String INVALID_OWED_AMOUNT \u003d \" \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Soumyadip-cmd"},"content":" private static final String VALID_SUBJECT \u003d BENSON.getSubject().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_SCHEDULE \u003d BENSON.getSchedule().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_RATE \u003d BENSON.getRate().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_PAID \u003d BENSON.getPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_OWED_AMOUNT \u003d BENSON.getOwedAmount().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, VALID_PAID,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE, VALID_SUBJECT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DennieDan"},"content":" VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_SCHEDULE, VALID_SUBJECT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"DennieDan"},"content":" VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_SCHEDULE, VALID_SUBJECT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"DennieDan"},"content":" VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"TY1Fan"},"content":" public void toModelType_invalidSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"TY1Fan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"TY1Fan"},"content":" String expectedMessage \u003d Schedule.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"TY1Fan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"TY1Fan"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"TY1Fan"},"content":" public void toModelType_nullSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"TY1Fan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Schedule.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toModelType_invalidSubject_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"DennieDan"},"content":" INVALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Soumyadip-cmd"},"content":" String expectedMessage \u003d Subject.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Soumyadip-cmd"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toModelType_nullSubject_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"DennieDan"},"content":" null, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Soumyadip-cmd"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Subject.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Soumyadip-cmd"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toModelType_invalidRate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, INVALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"DennieDan"},"content":" );","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"Soumyadip-cmd"},"content":" String expectedMessage \u003d Rate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Soumyadip-cmd"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"DennieDan"},"content":" public void toModelType_nullRate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, null, VALID_PAID, VALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Rate.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"DennieDan"},"content":" public void toModelType_invalidOwedAmount_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, VALID_PAID, INVALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d OwedAmount.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"DennieDan"},"content":" public void toModelType_nullOwedAmount_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, VALID_PAID, null);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, OwedAmount.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"DennieDan"},"content":" public void toModelType_invalidPaid_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, INVALID_PAID, VALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d Paid.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"DennieDan"},"content":" public void toModelType_nullPaid_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, null, VALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Paid.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"TY1Fan":11,"Soumyadip-cmd":44,"-":91,"DennieDan":79}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"TY1Fan"},"content":" descriptor.setSchedule(person.getSchedule());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Soumyadip-cmd"},"content":" descriptor.setSubject(person.getSubject());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" descriptor.setRate(person.getRate());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" descriptor.setPaid(person.getPaid());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" descriptor.setOwedAmount(person.getOwedAmount());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"TY1Fan"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"TY1Fan"},"content":" public EditPersonDescriptorBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"TY1Fan"},"content":" descriptor.setSchedule(new Schedule(schedule));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"TY1Fan"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Soumyadip-cmd"},"content":" * Sets the {@code Subject} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Soumyadip-cmd"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Soumyadip-cmd"},"content":" public EditPersonDescriptorBuilder withSubject(String subject) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Soumyadip-cmd"},"content":" descriptor.setSubject(new Subject(subject));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Soumyadip-cmd"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Rate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DennieDan"},"content":" public EditPersonDescriptorBuilder withRate(String rate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DennieDan"},"content":" descriptor.setRate(new Rate(rate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Paid} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"DennieDan"},"content":" public EditPersonDescriptorBuilder withPaid(String paid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"DennieDan"},"content":" descriptor.setPaid(new Paid(paid));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code OwedAmount} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DennieDan"},"content":" public EditPersonDescriptorBuilder withOwedAmount(String owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DennieDan"},"content":" descriptor.setOwedAmount(new OwedAmount(owedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":9,"Soumyadip-cmd":11,"-":76,"DennieDan":24}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TY1Fan"},"content":" public static final String DEFAULT_SCHEDULE \u003d \"Sunday-1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String DEFAULT_SUBJECT \u003d \"Mathematics\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" public static final String DEFAULT_FEE \u003d \"300\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" public static final String DEFAULT_PAID \u003d \"600\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" public static final String DEFAULT_OWED_AMOUNT \u003d \"300\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":" private Schedule schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":" private Subject subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" private Rate rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" private Paid paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" private OwedAmount owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" schedule \u003d new Schedule(DEFAULT_SCHEDULE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Soumyadip-cmd"},"content":" subject \u003d new Subject(DEFAULT_SUBJECT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" rate \u003d new Rate(DEFAULT_FEE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" paid \u003d new Paid(DEFAULT_PAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d new OwedAmount(DEFAULT_OWED_AMOUNT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" schedule \u003d personToCopy.getSchedule();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" subject \u003d personToCopy.getSubject();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" rate \u003d personToCopy.getRate();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" paid \u003d personToCopy.getPaid();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d personToCopy.getOwedAmount();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"TY1Fan"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"TY1Fan"},"content":" * Sets the {@code Schedule} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"TY1Fan"},"content":" public PersonBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"TY1Fan"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Soumyadip-cmd"},"content":" * Sets the {@code Subject} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Soumyadip-cmd"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Soumyadip-cmd"},"content":" public PersonBuilder withSubject(String subject) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d new Subject(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Soumyadip-cmd"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Rate} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"DennieDan"},"content":" public PersonBuilder withRate(String rate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d new Rate(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Paid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"DennieDan"},"content":" public PersonBuilder withPaid(String paid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d new Paid(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code OwedAmount} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" public PersonBuilder withOwedAmount(String owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d new OwedAmount(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"DennieDan"},"content":" return new Person(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"TY1Fan":13,"Soumyadip-cmd":14,"-":80,"DennieDan":39}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":" sb.append(PREFIX_SCHEDULE + person.getSchedule().value + \" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Soumyadip-cmd"},"content":" sb.append(PREFIX_SUBJECT + person.getSubject().toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" sb.append(PREFIX_RATE + person.getRate().toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" sb.append(PREFIX_PAID + person.getPaid().toString() + \" \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" sb.append(PREFIX_OWED_AMOUNT + person.getOwedAmount().toString() + \" \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"TY1Fan"},"content":" descriptor.getSchedule().ifPresent(schedule -\u003e sb.append(PREFIX_SCHEDULE).append(schedule.value).append(\" \"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Soumyadip-cmd"},"content":" descriptor.getSubject().ifPresent(subject -\u003e sb.append(PREFIX_SUBJECT).append(subject.toString()).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" descriptor.getRate().ifPresent(rate -\u003e sb.append(PREFIX_RATE).append(rate.toString()).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" descriptor.getPaid().ifPresent(paid -\u003e sb.append(PREFIX_PAID).append(paid.toString()).append(\" \"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DennieDan"},"content":" descriptor.getOwedAmount().ifPresent(owedAmount -\u003e sb.append(PREFIX_OWED_AMOUNT)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DennieDan"},"content":" .append(owedAmount.toString()).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":3,"Soumyadip-cmd":3,"-":47,"DennieDan":10}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PAID_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PAID_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":" .withPhone(\"94351253\").withSchedule(\"Sunday-1800-1900\").withSubject(\"Economics\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" .withRate(\"250.50\").withPaid(\"0\").withOwedAmount(\"250.50\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Soumyadip-cmd"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withSchedule(\"Monday-1800-1900\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" .withSubject(\"Mathematics\").withRate(\"100.80\").withPaid(\"201.6\").withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Tuesday-1800-1900\").withSubject(\"Mathematics\").withRate(\"300\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"1200\").withOwedAmount(\"900\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Wednesday-1800-1900\").withSubject(\"Mathematics\").withRate(\"450.5\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"450.5\").withOwedAmount(\"901.00\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"TY1Fan"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"94802224\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Thursday-1800-1900\").withSubject(\"Mathematics\").withRate(\"350\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"2800\").withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TY1Fan"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"94824270\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Friday-1800-1900\").withSubject(\"Mathematics\").withRate(\"260.25\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"0\").withOwedAmount(\"520.50\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TY1Fan"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"94824420\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Soumyadip-cmd"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withSchedule(\"Saturday-1800-1900\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" .withSubject(\"Mathematics\").withRate(\"120\").withPaid(\"1200\").withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"84820424\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Sunday-1800-1900\").withRate(\"200\").withPaid(\"8000\").withOwedAmount(\"1000\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"84820131\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Monday-1800-1900\").withRate(\"450\").withPaid(\"900\").withOwedAmount(\"900\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withSchedule(VALID_SCHEDULE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" .withRate(VALID_RATE_AMY).withPaid(VALID_PAID_AMY).withOwedAmount(VALID_OWED_AMOUNT_AMY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withSchedule(VALID_SCHEDULE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":" .withRate(VALID_RATE_BOB).withPaid(VALID_PAID_BOB).withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"TY1Fan":13,"Soumyadip-cmd":3,"-":53,"DennieDan":27}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14a-1/tp/graph/badge.svg?token\u003dXH80L1OD62)](https://codecov.io/gh/AY2425S1-CS2103T-F14a-1/tp)","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"teamotitan"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14a-1/tp/actions)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"# About the Project","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"**UGTeach** empowers undergraduate private tutors to efficiently manage payments, track student performance, and organize schedules. It streamlines tutoring operations, ensuring you stay organized and focused on helping your students achieve their academic goals.\u003cbr\u003e","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" **Example usages:**","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" * As a private tutor, you can add student\u0027s personal information and their tuition details","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" * As a private tutor, you can view the list of students you are currently tutoring","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" * As a private tutor, you can view the amount of money you have earned from tutoring","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":"# More Information","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" * It is **written in OOP fashion**. ","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" * It is **written in Java**, and has about 6 KLoC.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" * It is developed by a team of 5 from NUS Computer Science as a project for a module on software engineering (CS2103T). You can find more [about us here](https://ay2425s1-cs2103t-f14a-1.github.io/tp/AboutUs.html).","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":"* For the detailed documentation of this project, see the **[UG Teach Product Website](https://ay2425s1-cs2103t-f14a-1.github.io/tp/)**.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":"# Acknowledgement","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TY1Fan"},"content":" * This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-26","isFullCredit":false}],"authorContributionMap":{"Feng1231":17,"teamotitan":1,"TY1Fan":1,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":"### Chen Feng","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"\u003cimg src\u003d\"images/feng1231.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":"[[github](https://github.com/feng1231)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":"* Responsibilities: Scheduling and tracking","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"* In charge of Logic package","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":"### Dinh Duy Linh Dan","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"\u003cimg src\u003d\"images/denniedan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":"[[github](http://github.com/DennieDan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":"* Role: Testing","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"teamotitan"},"content":"### Timothy Tan","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"teamotitan"},"content":"\u003cimg src\u003d\"images/teamotitan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"teamotitan"},"content":"[[homepage](http://github.com/teamotitan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"teamotitan"},"content":"[[github](https://github.com/teamotitan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"teamotitan"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Soumyadip-cmd"},"content":"### Soumyadip Saha","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Soumyadip-cmd"},"content":"\u003cimg src\u003d\"images/soumyadip-cmd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Soumyadip-cmd"},"content":"[[github](http://github.com/soumyadip-cmd)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Soumyadip-cmd"},"content":"* Role: Developer, deadline and deliverables manager","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Soumyadip-cmd"},"content":"* Responsibilities: commons","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TY1Fan"},"content":"### Toh Yi Fan","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"TY1Fan"},"content":"\u003cimg src\u003d\"images/ty1fan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"TY1Fan"},"content":"[[github](https://github.com/TY1Fan)]","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":"* Role: Code quality, and in charge of storage component","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":"* Responsibilities: Looks after code quality and storage component","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false}],"authorContributionMap":{"Feng1231":6,"teamotitan":5,"TY1Fan":5,"Soumyadip-cmd":6,"-":38,"DennieDan":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Feng1231"},"content":"* is a full time university student with fixed schedule","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Feng1231"},"content":"* is giving private tuition to a significant number of students","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Feng1231"},"content":"* has a need to manage a significant number of tutees\u0027 information","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Feng1231"},"content":"**Value proposition**: Empower undergraduate private tutors to efficiently manage payments, track student performance, and organize schedules using CLI.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Feng1231"},"content":"|----------|--------------------------------------------|-------------------------------|-------------------------------------------------------------------------|","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Feng1231"},"content":"| `* * *` | tutor | add a new student | keep track of my tutee\u0027s information |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Feng1231"},"content":"| `* * *` | user | delete an entry | remove entries that I no longer need |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Feng1231"},"content":"| `* * *` | private tutor | view all my students\u0027 details | have an overview of how many tutees I am managing |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Feng1231"},"content":"| `* * *` | tutor with many students | find a student by name | locate details of tutees without having to go through the entire list |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Feng1231"},"content":"| `* *` | busy undergraduate tutor | find students by date | locate details of tutees that has tuition on a specific date |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Feng1231"},"content":"| `* *` | new user | see sample entries | understand how the interface will look like with entries added |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"TY1Fan"},"content":"| `* *` | user | edit contact details | keep my information up-to-date |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"TY1Fan"},"content":"| `* *` | busy undergraduate tutor | check who owes me tuition fee | identify and remind them to pay |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"TY1Fan"},"content":"| `* *` | busy undergraduate tutor | be reminded of my tuitions for today | remember to teach for today (if any) |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"TY1Fan"},"content":"| `* *` | busy undergraduate tutor | have an overview of the tuition fee earned/ owed as of now | easily keep track of how much more I should receive |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"TY1Fan"},"content":"| `* *` | forgetful user | detect duplicates | avoid manually finding and deleting the duplicates |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"TY1Fan"},"content":"| `* *` | forgetful user | tag users with date and time of tuition | differentiate between different contacts |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Feng1231"},"content":"| `*` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Feng1231"},"content":"| `*` | user that types fast | be able to undo my actions | revert back if I have made a mistake |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"TY1Fan"},"content":"| `*` | busy undergraduate tutor | have information of both the children and his/her guardian | contact either of them |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"TY1Fan"},"content":"| `*` | tutor with many students | to know which guardian is associated with which children | know which student is under that guardian/ vice-versa |","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Soumyadip-cmd"},"content":"(For all use cases below, the **System** is the `UGTeach` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC01 - Adding a student**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User enters command to create new student entry.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Soumyadip-cmd"},"content":"2. System displays success message and command line is cleared.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1a. System detects error in entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1a1-1a2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1b. System detects error in parameters.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1b1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1b2. User enters command with correct parameters.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1b1-1b2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC02 - Read all entries**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Soumyadip-cmd"},"content":"**MSS**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User enters command to view all entries.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Soumyadip-cmd"},"content":"2. System displays list with all entries to the user.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Soumyadip-cmd"},"content":" Use case ends.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Soumyadip-cmd"},"content":"**Extension**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1a. System detects error in entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1a1-1a2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1b. System detects the list is empty.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1b1. System shows an empty list.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC03 - Read total earnings**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Soumyadip-cmd"},"content":"**MSS**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User enters command to read total earnings and total money owed.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Soumyadip-cmd"},"content":"2. System displays total earnings and total money owed to the user.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Soumyadip-cmd"},"content":"**Extension**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Soumyadip-cmd"},"content":"* 1a. System detects error in entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Soumyadip-cmd"},"content":" * 1a2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 1a1-1a2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 2.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Soumyadip-cmd"},"content":"**Use case: UC04 - Delete a student entry**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Soumyadip-cmd"},"content":"**MSS**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Soumyadip-cmd"},"content":"1. User requests to \u003cins\u003elist students(UC01)\u003c/ins\u003e.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Soumyadip-cmd"},"content":"2. User enters command to delete a specific student.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Soumyadip-cmd"},"content":"3. System displays list with specified student deleted from the list.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Soumyadip-cmd"},"content":" Use case ends.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Soumyadip-cmd"},"content":"**Extensions**","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Soumyadip-cmd"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2a1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2a2. User enters command with new index.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 2a1-2a2 are repeated until index entered is correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 3.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Soumyadip-cmd"},"content":"* 2b. System detects error in format of entered command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2b1. System displays error message and does not clear command line.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Soumyadip-cmd"},"content":" * 2b2. User enters new command.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Soumyadip-cmd"},"content":"* Steps 2b1-2b2 are repeated until all details entered are correct.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Soumyadip-cmd"},"content":"* Use cases resumes from step 3.","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"DennieDan"},"content":"**Environment Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"DennieDan"},"content":"**Data Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"DennieDan"},"content":"1. All the data should be stored in human-editable files and must not be stored using DBMS. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"DennieDan"},"content":"2. Data should be saved permanently and not affected by any sudden accidents e.g., power outage, hardware breakdown.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"DennieDan"},"content":"**Performance Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"DennieDan"},"content":"1. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"DennieDan"},"content":"2. For any simple usage, the application should be able to respond within 2 seconds.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"DennieDan"},"content":"**Accessibility**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"DennieDan"},"content":"1. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"DennieDan"},"content":"2. The user interface should be easy to navigate and intuitive, with clear labels, large enough texts, and highlighted error messages. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"DennieDan"},"content":"3. The application should provide clear help sections for users, explaining how to use its features.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"DennieDan"},"content":"**Concurrency Control**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"DennieDan"},"content":"1. Should only be used by one person at a time, meaning it is designed for a single user and cannot be accessed or shared by multiple users simultaneously. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"DennieDan"},"content":"**Testability**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"DennieDan"},"content":"1. The software should not depend on any remote server and should be able to run at any time. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"DennieDan"},"content":"2. The application should be able to launch without an installer.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"DennieDan"},"content":"3. Features should be testable without any external installation or access e.g., remote APIs, audio players, user accounts, internet connection. ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"DennieDan"},"content":"**Security Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"DennieDan"},"content":"1. The application is assumed to be used locally without creating any user account.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"DennieDan"},"content":"2. Data stored in human-editable files is assumed to be highly secured and not damaged.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"DennieDan"},"content":"**Maintainability Requirements**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"DennieDan"},"content":"1. The codebase should be modular and well-documented (i.e. JavaDoc, following abstraction and cohesion) to ensure ease of maintenance and updates.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"DennieDan"},"content":"2. The application must use a version control system to track changes and maintain multiple versions of the software.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"DennieDan"},"content":"**Logging**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"DennieDan"},"content":"1. Activity Logs: The system should log all user activity and critical events for security auditing and troubleshooting.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"DennieDan"},"content":"* **DBMS**: Database Management System, a software providing tools for structural data storage.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"teamotitan"},"content":"* **CLI**: Command-line interface where you interact with the system using your keyboard","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"teamotitan"},"content":"* **API**: Application Programming Interface, a set of programming code that enables data transmission between one software and another","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"teamotitan"},"content":"* **Abstraction and Cohesion**: Abstraction is hiding all but relevant data in order to reduce complexity and increase efficiency. Cohesion is the degree which elements belong together","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"teamotitan"},"content":"* **Version Control System**: Version control is the practice of tracking and managing changes to software code, and there are many version control systems such as Git, Apache Subversion etc","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Feng1231":13,"TY1Fan":8,"teamotitan":4,"Soumyadip-cmd":69,"-":379,"DennieDan":33}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eUG Teach\u003c/a\u003e","lastModifiedDate":"2024-09-13","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F14a-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"-":62,"DennieDan":1}},{"path":"docs/team/johndoe.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"Test","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"-":45}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"TY1Fan"},"content":" .append(\"; Schedule: \")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" .append(person.getSchedule())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" .append(\"; Subject: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" .append(person.getSubject())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" .append(\"; Fee: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" .append(person.getRate())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" .append(\"; Paid: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DennieDan"},"content":" .append(person.getPaid())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":" .append(\"; Owed: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" .append(person.getOwedAmount());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"TY1Fan":1,"-":49,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":" + PREFIX_SCHEDULE + \"SCHEDULE \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SUBJECT + \"SUBJECT \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" + PREFIX_RATE + \"FEE \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_PAID + \"PAID] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_OWED_AMOUNT + \"OWED] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SCHEDULE + \"Sunday-1000-1200 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SUBJECT + \"Biology \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" + PREFIX_RATE + \"3000 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" + PREFIX_PAID + \"6000 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" + PREFIX_OWED_AMOUNT + \"3000 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"TY1Fan":2,"Soumyadip-cmd":4,"-":80,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"[\" + PREFIX_SCHEDULE + \"SCHEDULE] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_SUBJECT + \"SUBJECT] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_RATE + \"FEE] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_PAID + \"PAID] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" + \"[\" + PREFIX_OWED_AMOUNT + \"OWED] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"TY1Fan"},"content":" + PREFIX_EMAIL + \"johndoe@example.com \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SCHEDULE + \"Saturday-1000-1200 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Soumyadip-cmd"},"content":" + PREFIX_SUBJECT + \"Mathematics \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" + PREFIX_RATE + \"300 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" + PREFIX_PAID + \"600 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":" + PREFIX_OWED_AMOUNT + \"300 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"TY1Fan"},"content":" Schedule updatedSchedule \u003d editPersonDescriptor.getSchedule().orElse(personToEdit.getSchedule());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject updatedSubject \u003d editPersonDescriptor.getSubject().orElse(personToEdit.getSubject());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" Rate updatedRate \u003d editPersonDescriptor.getRate().orElse(personToEdit.getRate());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":" Paid updatedPaid \u003d editPersonDescriptor.getPaid().orElse(personToEdit.getPaid());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"DennieDan"},"content":" OwedAmount updatedOwedAmount \u003d editPersonDescriptor.getOwedAmount().orElse(personToEdit.getOwedAmount());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" return new Person(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"DennieDan"},"content":" updatedName, updatedPhone, updatedEmail, updatedAddress, updatedSchedule, updatedSubject, updatedRate,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" updatedPaid, updatedOwedAmount","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"TY1Fan"},"content":" private Schedule schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Soumyadip-cmd"},"content":" private Subject subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"DennieDan"},"content":" private Rate rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"DennieDan"},"content":" private Paid paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"DennieDan"},"content":" private OwedAmount owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"TY1Fan"},"content":" setSchedule(toCopy.schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Soumyadip-cmd"},"content":" setSubject(toCopy.subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"DennieDan"},"content":" setRate(toCopy.rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"DennieDan"},"content":" setPaid(toCopy.paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"DennieDan"},"content":" setOwedAmount(toCopy.owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"TY1Fan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"TY1Fan"},"content":" public void setSchedule(Schedule schedule) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"TY1Fan"},"content":" public Optional\u003cSchedule\u003e getSchedule() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"TY1Fan"},"content":" return Optional.ofNullable(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Soumyadip-cmd"},"content":" public void setSubject(Subject subject) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Soumyadip-cmd"},"content":" public Optional\u003cSubject\u003e getSubject() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Soumyadip-cmd"},"content":" return Optional.ofNullable(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"DennieDan"},"content":" public void setRate(Rate rate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"DennieDan"},"content":" public Optional\u003cRate\u003e getRate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"DennieDan"},"content":" return Optional.ofNullable(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"DennieDan"},"content":" public void setPaid(Paid paid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"DennieDan"},"content":" public Optional\u003cPaid\u003e getPaid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"DennieDan"},"content":" return Optional.ofNullable(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"DennieDan"},"content":" public void setOwedAmount(OwedAmount owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"DennieDan"},"content":" public Optional\u003cOwedAmount\u003e getOwedAmount() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"DennieDan"},"content":" return Optional.ofNullable(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 Objects.equals(schedule, otherEditPersonDescriptor.schedule)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 Objects.equals(subject, otherEditPersonDescriptor.subject)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 Objects.equals(rate, otherEditPersonDescriptor.rate)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 Objects.equals(paid, otherEditPersonDescriptor.paid)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 Objects.equals(owedAmount, otherEditPersonDescriptor.owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"TY1Fan"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Soumyadip-cmd"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"DennieDan"},"content":" .add(\"rate\", rate)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"DennieDan"},"content":" .add(\"paid\", paid)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"DennieDan"},"content":" .add(\"owedAmount\", owedAmount)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"TY1Fan":15,"Soumyadip-cmd":20,"-":213,"DennieDan":51}},{"path":"src/main/java/seedu/address/logic/commands/IncomeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"teamotitan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"teamotitan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"teamotitan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"teamotitan"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"teamotitan"},"content":" * Displays total money earned, as well as total money","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"teamotitan"},"content":" * owed","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"teamotitan"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"teamotitan"},"content":"public class IncomeCommand extends Command {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"teamotitan"},"content":" public static final String COMMAND_WORD \u003d \"income\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"teamotitan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Showed total money earned and owed\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"teamotitan"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"teamotitan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"teamotitan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"teamotitan"},"content":" int feesOwed \u003d 0;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"teamotitan"},"content":" int feesEarned \u003d 0;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"teamotitan"},"content":" //ObservableList\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"teamotitan"},"content":" //for (Person person: personList) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"teamotitan"},"content":" //fees_owed +\u003d person.getFeeOwed();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"teamotitan"},"content":" //fees_earned +\u003d person.getFeeEarned();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"teamotitan"},"content":" //}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"teamotitan"},"content":" return new CommandResult(\"Fees owed: \" + feesOwed + \", fees earned: \"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"teamotitan"},"content":" + feesEarned);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"teamotitan"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"teamotitan"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"teamotitan":29}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"TY1Fan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Soumyadip-cmd"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"TY1Fan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"TY1Fan"},"content":" Schedule schedule \u003d ParserUtil.parseSchedule(argMultimap.getValue(PREFIX_SCHEDULE).get());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject subject \u003d ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" Rate rate \u003d ParserUtil.parseRate(argMultimap.getValue(PREFIX_RATE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" Paid paid \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_PAID).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" paid \u003d ParserUtil.parsePaid(argMultimap.getValue(PREFIX_PAID).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":" paid \u003d new Paid();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_OWED_AMOUNT).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d ParserUtil.parseOwedAmount(argMultimap.getValue(PREFIX_OWED_AMOUNT).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d new OwedAmount();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" Person person \u003d new Person(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":6,"Soumyadip-cmd":4,"-":51,"DennieDan":22}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"teamotitan"},"content":"import seedu.address.logic.commands.IncomeCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"teamotitan"},"content":" case IncomeCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"teamotitan"},"content":" return new IncomeCommand();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"teamotitan"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"teamotitan":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TY1Fan"},"content":" public static final Prefix PREFIX_SCHEDULE \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TY1Fan"},"content":" public static final Prefix PREFIX_SUBJECT \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":" public static final Prefix PREFIX_RATE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":" public static final Prefix PREFIX_PAID \u003d new Prefix(\"paid/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":" public static final Prefix PREFIX_OWED_AMOUNT \u003d new Prefix(\"owed/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"TY1Fan":3,"-":13,"DennieDan":2}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"TY1Fan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" if (argMultimap.getValue(PREFIX_SCHEDULE).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" editPersonDescriptor.setSchedule(ParserUtil.parseSchedule(argMultimap.getValue(PREFIX_SCHEDULE).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Soumyadip-cmd"},"content":" if (argMultimap.getValue(PREFIX_SUBJECT).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Soumyadip-cmd"},"content":" editPersonDescriptor.setSubject(ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_RATE).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" editPersonDescriptor.setRate(ParserUtil.parseRate(argMultimap.getValue(PREFIX_RATE).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_PAID).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" editPersonDescriptor.setPaid(ParserUtil.parsePaid(argMultimap.getValue(PREFIX_PAID).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" if (argMultimap.getValue(PREFIX_OWED_AMOUNT).isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" editPersonDescriptor.setOwedAmount(ParserUtil.parseOwedAmount(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":" argMultimap.getValue(PREFIX_OWED_AMOUNT).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"TY1Fan":5,"Soumyadip-cmd":4,"-":60,"DennieDan":16}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"TY1Fan"},"content":" * Parses a {@code String schedule} into an {@code Schedule}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"TY1Fan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"TY1Fan"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"TY1Fan"},"content":" * @throws ParseException if the given {@code schedule} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"TY1Fan"},"content":" public static Schedule parseSchedule(String schedule) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"TY1Fan"},"content":" requireNonNull(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"TY1Fan"},"content":" String trimmedSchedule \u003d schedule.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"TY1Fan"},"content":" if (!Schedule.isValidSchedule(trimmedSchedule)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"TY1Fan"},"content":" throw new ParseException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"TY1Fan"},"content":" return new Schedule(trimmedSchedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Soumyadip-cmd"},"content":" * Parses a {@code String subject} into an {@code Subject}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Soumyadip-cmd"},"content":" * @throws ParseException if the given {@code subject} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Soumyadip-cmd"},"content":" public static Subject parseSubject(String subject) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Soumyadip-cmd"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" String trimmedSubject \u003d subject.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":" if (!Subject.isValidSubject(trimmedSubject)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Soumyadip-cmd"},"content":" throw new ParseException(Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Soumyadip-cmd"},"content":" return new Subject(trimmedSubject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"DennieDan"},"content":" * Parses a {@code String rate} into a {@code Rate}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" * @throws ParseException if the given {@code rate} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" public static Rate parseRate(String rate) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" requireNonNull(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" String trimmedRate \u003d rate.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" if (!Rate.isValidRate(trimmedRate)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" throw new ParseException(Rate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"DennieDan"},"content":" return new Rate(trimmedRate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"DennieDan"},"content":" * Parses a {@code String paid} into a {@code Paid}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"DennieDan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"DennieDan"},"content":" * @throws ParseException if the given {@code paid} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"DennieDan"},"content":" public static Paid parsePaid(String paid) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"DennieDan"},"content":" requireNonNull(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"DennieDan"},"content":" String trimmedPaid \u003d paid.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"DennieDan"},"content":" if (!Paid.isValidPaid(trimmedPaid)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"DennieDan"},"content":" throw new ParseException(Paid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"DennieDan"},"content":" return new Paid(trimmedPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"DennieDan"},"content":" * Parses a {@code String owedAmount} into an {@code OwedAmount}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"DennieDan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"DennieDan"},"content":" * @throws ParseException if the {@code owedAmount} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"DennieDan"},"content":" public static OwedAmount parseOwedAmount(String owedAmount) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"DennieDan"},"content":" requireNonNull(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"DennieDan"},"content":" String trimmedOwedAmount \u003d owedAmount.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"DennieDan"},"content":" if (!OwedAmount.isValidOwedAmount(trimmedOwedAmount)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"DennieDan"},"content":" throw new ParseException(OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"DennieDan"},"content":" return new OwedAmount(trimmedOwedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"TY1Fan":15,"Soumyadip-cmd":10,"-":104,"DennieDan":42}},{"path":"src/main/java/seedu/address/model/person/Days.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":" * Represents a set of days in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"public enum Days {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid day.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidDay(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" Days.valueOf(test.toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":20}},{"path":"src/main/java/seedu/address/model/person/Fee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" * Represents a fee amount in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"public abstract class Fee {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"\"\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" should adhere to the following constraints:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" 1. is a non negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" 2. at most 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" \"\"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+(\\\\.[0-9]{1,2})?$\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" public final double value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Fee}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" * @param fee A valid fee.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" public Fee(String fee) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" requireNonNull(fee);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" checkArgument(isValidFee(fee), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" this.value \u003d Double.parseDouble(fee);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid fee.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidFee(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" return String.format(\"%.2f\", value);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Fee)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" Fee otherFee \u003d (Fee) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" return value \u003d\u003d otherFee.value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" return Double.hashCode(value);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":64}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"TY1Fan"},"content":" fullName \u003d formatName(name);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" private static String formatName(String name) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"TY1Fan"},"content":" String[] words \u003d name.toLowerCase().split(\"\\\\s+\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"TY1Fan"},"content":" return formatWords(words);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"TY1Fan"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" * Formats an array of words by capitalizing the first letter of each word","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"TY1Fan"},"content":" * and joining them into a single string.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"TY1Fan"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"TY1Fan"},"content":" * @param words Array of words to be formatted.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"TY1Fan"},"content":" * @return A formatted string with each word capitalized.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"TY1Fan"},"content":" private static String formatWords(String[] words) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"TY1Fan"},"content":" StringBuilder formattedWords \u003d new StringBuilder();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TY1Fan"},"content":" for (String word : words) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"TY1Fan"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"TY1Fan"},"content":" formattedWords.append(capitalizeWord(word)).append(\" \");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" return formattedWords.toString().trim();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"TY1Fan"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"TY1Fan"},"content":" * Capitalizes the first letter of the word.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"TY1Fan"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"TY1Fan"},"content":" * @param word The word to be formatted.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"TY1Fan"},"content":" * @return Word with the first letter capitalized.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"TY1Fan"},"content":" private static String capitalizeWord(String word) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"TY1Fan"},"content":" return Character.toUpperCase(word.charAt(0)) + word.substring(1);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"TY1Fan":36,"-":67}},{"path":"src/main/java/seedu/address/model/person/OwedAmount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DennieDan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DennieDan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DennieDan"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":" * Represents a Person\u0027s owed tuition fee in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"public class OwedAmount extends Fee {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Owed \" + Fee.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":" * Constructs a {@code OwedAmount}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":" * @param owedAmount A valid owed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":" public OwedAmount(String owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":" super(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":" * Constructs a {@code Amount}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":" public OwedAmount() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" super(\"0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" public static boolean isValidOwedAmount(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":" return Fee.isValidFee(test);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DennieDan"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":" if (!(other instanceof OwedAmount)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" OwedAmount otherOwedAmount \u003d (OwedAmount) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" return value \u003d\u003d otherOwedAmount.value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" return Objects.hash(value, OwedAmount.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"DennieDan":50}},{"path":"src/main/java/seedu/address/model/person/Paid.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s paid tuition fee in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"public class Paid extends Fee {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Paid \" + Fee.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Paid}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" * @param paid A valid paid.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" public Paid(String paid) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" super(paid);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":" * Constructs a {@code Paid}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":" * with a default {@code value} of 0.0","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" public Paid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" super(\"0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidPaid(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" return Fee.isValidFee(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Paid)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" Paid otherPaid \u003d (Paid) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" return value \u003d\u003d otherPaid.value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" return Objects.hash(value, Paid.class);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":42,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"TY1Fan"},"content":" private final Schedule schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Soumyadip-cmd"},"content":" private final Subject subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" private final Rate rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" private final Paid paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" private final OwedAmount owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" public Person(Name name, Phone phone, Email email, Address address, Schedule schedule,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" Subject subject, Rate rate, Paid paid, OwedAmount owedAmount) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" requireAllNonNull(name, phone, email, address);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" public Schedule getSchedule() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" return schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Soumyadip-cmd"},"content":" public Subject getSubject() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Soumyadip-cmd"},"content":" return subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" public Rate getRate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" return rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" public Paid getPaid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" return paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":" public OwedAmount getOwedAmount() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DennieDan"},"content":" return owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 schedule.equals(otherPerson.schedule)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Soumyadip-cmd"},"content":" \u0026\u0026 subject.equals(otherPerson.subject)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 rate.equals(otherPerson.rate)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 paid.equals(otherPerson.paid)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":" \u0026\u0026 owedAmount.equals(otherPerson.owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" return Objects.hash(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"TY1Fan"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Soumyadip-cmd"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" .add(\"rate\", rate)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" .add(\"paid\", paid)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" .add(\"owedAmount\", owedAmount)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"TY1Fan":7,"Soumyadip-cmd":9,"-":99,"DennieDan":26}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TY1Fan"},"content":" \"Phone numbers should only contain numbers, start with 6, 8, or 9, and be exactly 8 digits long\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":" public static final String VALIDATION_REGEX \u003d \"^[689]\\\\d{7}$\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"TY1Fan":2,"-":59}},{"path":"src/main/java/seedu/address/model/person/Rate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s tuition fee rate in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"public class Rate extends Fee {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Rate \" + Fee.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Rate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" * @param rate A valid rate.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" public Rate(String rate) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" super(rate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidRate(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" return Fee.isValidFee(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" return super.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Rate)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" Rate otherRate \u003d (Rate) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" return value \u003d\u003d otherRate.value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" return Objects.hash(value, Rate.class);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":48,"DennieDan":1}},{"path":"src/main/java/seedu/address/model/person/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.model.person.Days.isValidDay;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"import java.util.Objects;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s lesson time in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSchedule(String)}","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":"public class Schedule {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"\"\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" Schedule should be in the format of Day-startTime-endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" and adhere to the following constraints:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" 1. Day should be a valid day of the week:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" 2. startTime and endTime should be in the format of HHMM","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" 3. startTime should be strictly before endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" 4. startTime and endTime should be within the range of 0000 to 2359","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" There should be no whitespace in between the day, startTime and endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" \"\"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" public static final DateTimeFormatter TIME_FORMAT \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" public final Days dayValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" public final LocalTime startTimeValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" public final LocalTime endTimeValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"TY1Fan"},"content":" public final String value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Time}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" * @param time A valid time.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" public Schedule(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" requireNonNull(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" checkArgument(isValidSchedule(time), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" this.value \u003d time;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" this.dayValue \u003d getDayComponent(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" this.startTimeValue \u003d getStartTimeComponent(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" this.endTimeValue \u003d getEndTimeComponent(time);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid Schedule.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidSchedule(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d test.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" if (split.length !\u003d 3) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" String day \u003d split[0];","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" String startTime \u003d split[1];","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" String endTime \u003d split[2];","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" boolean isValidDayFormat \u003d isValidDay(day);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" boolean isValidTimeFormat \u003d isValidTime(startTime) \u0026\u0026 isValidTime(endTime);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" boolean isValidTimeRange \u003d isValidTimeRange(startTime, endTime);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" return isValidDayFormat \u0026\u0026 isValidTimeFormat \u0026\u0026 isValidTimeRange;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" * Returns true if the time string is a valid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidTime(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" if (time.length() !\u003d 4) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":" // disallow 2400","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" if (time.equals(\"2400\")) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" LocalTime.parse(time, TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Feng1231"},"content":" * Returns true if startTime is before endTime","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidTimeRange(String startTime, String endTime) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Feng1231"},"content":" if (!isValidTime(startTime) || !isValidTime(endTime)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Feng1231"},"content":" LocalTime start \u003d LocalTime.parse(startTime, TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Feng1231"},"content":" LocalTime end \u003d LocalTime.parse(endTime, TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Feng1231"},"content":" return start.isBefore(end);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"DennieDan"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Feng1231"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Feng1231"},"content":" return dayValue + \" \" + startTimeValue + \" - \" + endTimeValue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Feng1231"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Feng1231"},"content":" return dayValue.equals(otherSchedule.dayValue)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Feng1231"},"content":" \u0026\u0026 startTimeValue.equals(otherSchedule.startTimeValue)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Feng1231"},"content":" \u0026\u0026 endTimeValue.equals(otherSchedule.endTimeValue);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Feng1231"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Feng1231"},"content":" return Objects.hash(dayValue, startTimeValue, endTimeValue);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Feng1231"},"content":" private Days getDayComponent(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d time.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Feng1231"},"content":" return Days.valueOf(split[0].toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Feng1231"},"content":" private LocalTime getStartTimeComponent(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d time.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Feng1231"},"content":" return LocalTime.parse(split[1], TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Feng1231"},"content":" private LocalTime getEndTimeComponent(String time) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Feng1231"},"content":" String[] split \u003d time.split(\"-\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Feng1231"},"content":" return LocalTime.parse(split[2], TIME_FORMAT);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":146,"TY1Fan":3,"DennieDan":1}},{"path":"src/main/java/seedu/address/model/person/Subject.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":" * Represents a Person\u0027s subject in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"public class Subject {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Subjects should only be: \"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"economics / literature / music / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"biology / chemistry /science / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"english / chinese / malay / tamil / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"math / history / geography / physics / \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Soumyadip-cmd"},"content":" + \"GP \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" public final Subjects value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" * Constructs a {@code Subject}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" public Subject(String subject) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" checkArgument(isValidSubject(subject), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" value \u003d Subjects.valueOf(subject.toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" * Returns true if a given string is a valid subject.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" public static boolean isValidSubject(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" Subjects.valueOf(test.toUpperCase());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" if (!(other instanceof Subject)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" Subject otherSubject \u003d (Subject) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" return value.equals(otherSubject.value);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Soumyadip-cmd"},"content":" * Returns string value of enumerated subject.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Soumyadip-cmd"},"content":" * @return String value of subject.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Soumyadip-cmd"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Soumyadip-cmd"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Soumyadip-cmd"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Soumyadip-cmd"},"content":" return value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":61,"Soumyadip-cmd":14}},{"path":"src/main/java/seedu/address/model/person/Subjects.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":" * Represents a set of values that a Person\u0027s subject","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":" * can take in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"public enum Subjects {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":" ECONOMICS, LITERATURE, MUSIC,","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":" BIOLOGY, CHEMISTRY, SCIENCE,","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":" ENGLISH, CHINESE, MALAY, TAMIL,","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Soumyadip-cmd"},"content":" MATHEMATICS, HISTORY, GEOGRAPHY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":" PHYSICS, GP","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":11,"Soumyadip-cmd":2}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Schedule(\"Tuesday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Mathematics\"), new Rate(\"120.50\"), new Paid(), new OwedAmount(\"120.50\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Schedule(\"Wednesday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Mathematics\"), new Rate(\"400.0\"), new Paid(\"800.00\"), new OwedAmount(\"400.0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Schedule(\"Wednesday-1600-1800\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Physics\"), new Rate(\"380.22\"), new Paid(\"1140.66\"), new OwedAmount(\"0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Schedule(\"Thursday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Chemistry\"), new Rate(\"90.15\"), new Paid(\"450.75\"), new OwedAmount(\"180.30\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Schedule(\"Thursday-1600-1800\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Physics\"), new Rate(\"400\"), new Paid(\"400\"), new OwedAmount(\"0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Soumyadip-cmd"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Schedule(\"Friday-1300-1500\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" new Subject(\"Economics\"), new Rate(\"550.15\"), new Paid(), new OwedAmount(\"0\")),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"Soumyadip-cmd":7,"-":35,"DennieDan":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"TY1Fan"},"content":" private final String schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Soumyadip-cmd"},"content":" private final String subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" private final String rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" private final String paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" private final String owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Soumyadip-cmd"},"content":" @JsonProperty(\"schedule\") String schedule, @JsonProperty(\"subject\") String subject,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" @JsonProperty(\"rate\") String rate, @JsonProperty(\"paid\") String paid,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" @JsonProperty(\"owedAmount\") String owedAmount) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" schedule \u003d source.getSchedule().value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Soumyadip-cmd"},"content":" subject \u003d source.getSubject().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" rate \u003d source.getRate().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" paid \u003d source.getPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d source.getOwedAmount().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":" if (schedule \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"TY1Fan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"TY1Fan"},"content":" Schedule.class.getSimpleName()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"TY1Fan"},"content":" if (!Schedule.isValidSchedule(schedule)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"TY1Fan"},"content":" throw new IllegalValueException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"TY1Fan"},"content":" final Schedule modelSchedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Soumyadip-cmd"},"content":" if (subject \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Soumyadip-cmd"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":" if (!Subject.isValidSubject(subject)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Soumyadip-cmd"},"content":" throw new IllegalValueException(Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Soumyadip-cmd"},"content":" final Subject modelSubject \u003d new Subject(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"DennieDan"},"content":" if (rate \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Rate.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" if (!Rate.isValidRate(rate)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(Rate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":" final Rate modelRate \u003d new Rate(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" if (paid \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Paid.class.getSimpleName()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" if (!Paid.isValidPaid(paid)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(Paid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"DennieDan"},"content":" final Paid modelPaid \u003d new Paid(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"DennieDan"},"content":" if (owedAmount \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"DennieDan"},"content":" OwedAmount.class.getSimpleName()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"DennieDan"},"content":" if (!OwedAmount.isValidOwedAmount(owedAmount)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"DennieDan"},"content":" throw new IllegalValueException(OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"DennieDan"},"content":" final OwedAmount modelOwedAmount \u003d new OwedAmount(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"DennieDan"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelSchedule,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"DennieDan"},"content":" modelSubject, modelRate, modelPaid, modelOwedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"TY1Fan":13,"Soumyadip-cmd":14,"-":88,"DennieDan":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"// import java.util.Comparator;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" // used to display blue color tags.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" // This is the code to show blue tags. I will comment it out instead of deleting it.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" /*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Feng1231":7,"-":58}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PAID_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + SCHEDULE_DESC_AMY + SUBJECT_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"DennieDan"},"content":" + PAID_DESC_AMY + OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Feng1231"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"Soumyadip-cmd":1,"-":173,"DennieDan":6}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_PHONE_AMY \u003d \"91111111\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_PHONE_BOB \u003d \"82222222\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_SCHEDULE_AMY \u003d \"Sunday-1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"TY1Fan"},"content":" public static final String VALID_SCHEDULE_BOB \u003d \"Monday-1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String VALID_SUBJECT_AMY \u003d \"Mathematics\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String VALID_SUBJECT_BOB \u003d \"Mathematics\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_RATE_AMY \u003d \"250.00\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_RATE_BOB \u003d \"300.25\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_PAID_AMY \u003d \"750.00\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_PAID_BOB \u003d \"0.0\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_OWED_AMOUNT_AMY \u003d \"500.00\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" public static final String VALID_OWED_AMOUNT_BOB \u003d \"300.25\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"TY1Fan"},"content":" public static final String SCHEDULE_DESC_AMY \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" public static final String SCHEDULE_DESC_BOB \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String SUBJECT_DESC_AMY \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String SUBJECT_DESC_BOB \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" public static final String RATE_DESC_AMY \u003d \" \" + PREFIX_RATE + VALID_RATE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" public static final String RATE_DESC_BOB \u003d \" \" + PREFIX_RATE + VALID_RATE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" public static final String PAID_DESC_AMY \u003d \" \" + PREFIX_PAID + VALID_PAID_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" public static final String PAID_DESC_BOB \u003d \" \" + PREFIX_PAID + VALID_PAID_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" public static final String OWED_AMOUNT_DESC_AMY \u003d \" \" + PREFIX_OWED_AMOUNT + VALID_OWED_AMOUNT_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" public static final String OWED_AMOUNT_DESC_BOB \u003d \" \" + PREFIX_OWED_AMOUNT + VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"TY1Fan"},"content":" public static final String INVALID_SCHEDULE_DESC \u003d \" \" + PREFIX_SCHEDULE + \"Sunday 1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String INVALID_SUBJECT_DESC \u003d \" \" + PREFIX_SUBJECT + \"Physical education\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DennieDan"},"content":" public static final String INVALID_RATE_DESC \u003d \" \" + PREFIX_RATE + \"12.398\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DennieDan"},"content":" public static final String INVALID_PAID_DESC \u003d \" \" + PREFIX_PAID + \" \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DennieDan"},"content":" public static final String INVALID_OWED_AMOUNT_DESC \u003d \" \" + PREFIX_OWED_AMOUNT + \"19.000\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DennieDan"},"content":" .withSchedule(VALID_SCHEDULE_AMY).withSubject(VALID_SUBJECT_AMY).withRate(VALID_RATE_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DennieDan"},"content":" .withPaid(VALID_PAID_AMY).withOwedAmount(VALID_OWED_AMOUNT_AMY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DennieDan"},"content":" .withSchedule(VALID_SCHEDULE_BOB).withSubject(VALID_SUBJECT_BOB).withRate(VALID_RATE_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DennieDan"},"content":" .withPaid(VALID_PAID_BOB).withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":8,"Soumyadip-cmd":6,"-":118,"DennieDan":22}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" .build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", schedule\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" + editPersonDescriptor.getSchedule().orElse(null) + \", subject\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Soumyadip-cmd"},"content":" + editPersonDescriptor.getSubject().orElse(null) + \", rate\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" + editPersonDescriptor.getRate().orElse(null) + \", paid\u003d\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" + editPersonDescriptor.getPaid().orElse(null) + \", owedAmount\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" + editPersonDescriptor.getOwedAmount().orElse(null) + \"}\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"Soumyadip-cmd":2,"-":64,"DennieDan":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_OWED_AMOUNT_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PAID_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RATE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SCHEDULE_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SUBJECT_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PAID_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PAID_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DennieDan"},"content":" + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB + PAID_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Soumyadip-cmd"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" /*public void parse_repeatedNonTagValue_failure() {*/","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DennieDan"},"content":" + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB + PAID_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"TY1Fan"},"content":" // multiple schedules","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, SCHEDULE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SCHEDULE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"DennieDan"},"content":" // multiple rates","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, RATE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RATE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"DennieDan"},"content":" // multiple owedAmounts","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, OWED_AMOUNT_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Soumyadip-cmd"},"content":" // multiple subjects","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, SUBJECT_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Soumyadip-cmd"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SUBJECT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" // multiple payment_amounts","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, PAID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PAID));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" + SCHEDULE_DESC_AMY + SUBJECT_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" + PAID_DESC_AMY + OWED_AMOUNT_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":" PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_SUBJECT, PREFIX_RATE, PREFIX_PAID, PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"TY1Fan"},"content":" // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, INVALID_SCHEDULE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SCHEDULE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Soumyadip-cmd"},"content":" // invalid subject","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, INVALID_SUBJECT_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Soumyadip-cmd"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SUBJECT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"DennieDan"},"content":" // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, INVALID_RATE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RATE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"DennieDan"},"content":" // invalid paid","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, INVALID_PAID_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PAID));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"DennieDan"},"content":" // invalid owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, INVALID_OWED_AMOUNT_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"TY1Fan"},"content":" // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SCHEDULE_DESC,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SCHEDULE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Soumyadip-cmd"},"content":" // invalid subject","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SUBJECT_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Soumyadip-cmd"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SUBJECT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"DennieDan"},"content":" // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_RATE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RATE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"DennieDan"},"content":" // invalid paid","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PAID_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PAID));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"DennieDan"},"content":" // invalid owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_OWED_AMOUNT_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"DennieDan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Feng1231"},"content":" // seems like this is for tags","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"DennieDan"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"TY1Fan"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"DennieDan"},"content":" + SCHEDULE_DESC_AMY + SUBJECT_DESC_AMY + RATE_DESC_AMY + PAID_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"DennieDan"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"DennieDan"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB + PAID_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Soumyadip-cmd"},"content":" // missing schedule prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Soumyadip-cmd"},"content":" + VALID_SCHEDULE_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Soumyadip-cmd"},"content":" // missing subject prefix","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + VALID_SUBJECT_BOB + RATE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"DennieDan"},"content":" // missing rate prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"Soumyadip-cmd"},"content":" + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + VALID_RATE_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"Soumyadip-cmd"},"content":" + VALID_SCHEDULE_BOB + VALID_SUBJECT_BOB + VALID_RATE_BOB, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Soumyadip-cmd"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"Soumyadip-cmd"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"DennieDan"},"content":" + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Soumyadip-cmd"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Soumyadip-cmd"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"TY1Fan"},"content":" // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + INVALID_SCHEDULE_DESC + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Soumyadip-cmd"},"content":" Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Soumyadip-cmd"},"content":" // invalid subject","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Soumyadip-cmd"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + INVALID_SUBJECT_DESC + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"DennieDan"},"content":" // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Soumyadip-cmd"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"DennieDan"},"content":" + INVALID_RATE_DESC, Rate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"DennieDan"},"content":" // invalid paid","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"DennieDan"},"content":" + RATE_DESC_BOB + INVALID_PAID_DESC, Paid.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"DennieDan"},"content":" // invalid owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"DennieDan"},"content":" + RATE_DESC_BOB + INVALID_OWED_AMOUNT_DESC, OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Feng1231"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SCHEDULE_DESC_BOB + SUBJECT_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Feng1231":10,"TY1Fan":31,"Soumyadip-cmd":43,"-":147,"DennieDan":94}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" /* comment out for tag, in case it is needed in the future","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":150}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_OWED_AMOUNT_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RATE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SCHEDULE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RATE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCHEDULE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"TY1Fan"},"content":" assertParseFailure(parser, \"1\" + INVALID_SCHEDULE_DESC, Schedule.MESSAGE_CONSTRAINTS); // invalid schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, \"1\" + INVALID_RATE_DESC, Rate.MESSAGE_CONSTRAINTS); // invalid rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, \"1\" + INVALID_OWED_AMOUNT_DESC, OwedAmount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"DennieDan"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"DennieDan"},"content":" + VALID_PHONE_AMY + VALID_SCHEDULE_AMY + VALID_RATE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Feng1231"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"DennieDan"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + SCHEDULE_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"DennieDan"},"content":" .withSchedule(VALID_SCHEDULE_AMY).withRate(VALID_RATE_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"DennieDan"},"content":" .withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"TY1Fan"},"content":" // schedule","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"TY1Fan"},"content":" userInput \u003d targetIndex.getOneBased() + SCHEDULE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"TY1Fan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSchedule(VALID_SCHEDULE_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"TY1Fan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"TY1Fan"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"DennieDan"},"content":" // rate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"DennieDan"},"content":" userInput \u003d targetIndex.getOneBased() + RATE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"DennieDan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRate(VALID_RATE_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"DennieDan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"DennieDan"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"DennieDan"},"content":" // owedAmount","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"DennieDan"},"content":" userInput \u003d targetIndex.getOneBased() + OWED_AMOUNT_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"DennieDan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withOwedAmount(VALID_OWED_AMOUNT_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"DennieDan"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"DennieDan"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + SCHEDULE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"DennieDan"},"content":" + RATE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"DennieDan"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + SCHEDULE_DESC_AMY + RATE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"DennieDan"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + SCHEDULE_DESC_BOB + RATE_DESC_BOB","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"DennieDan"},"content":" + OWED_AMOUNT_DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_RATE, PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"DennieDan"},"content":" + INVALID_SCHEDULE_DESC + INVALID_RATE_DESC + INVALID_OWED_AMOUNT_DESC + INVALID_PHONE_DESC","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"DennieDan"},"content":" + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + INVALID_SCHEDULE_DESC + INVALID_RATE_DESC","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"DennieDan"},"content":" + INVALID_OWED_AMOUNT_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"TY1Fan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"DennieDan"},"content":" PREFIX_SCHEDULE, PREFIX_RATE, PREFIX_OWED_AMOUNT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"Feng1231":1,"TY1Fan":8,"-":166,"DennieDan":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TY1Fan"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"-":140}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":105}},{"path":"src/test/java/seedu/address/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" Address sameAddress \u003d new Address(\"Valid Address\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" Address differentAddress \u003d new Address(\"Other Valid Address\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" assertEquals(address.hashCode(), sameAddress.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(address.hashCode(), differentAddress.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":12,"-":56}},{"path":"src/test/java/seedu/address/model/person/DaysTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"class DaysTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" public void isValidDay_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" // null day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Days.isValidDay(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" public void isValidDay_invalidDay_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" // invalid day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"mon\")); // short form","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"monday1\")); // with number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"monday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" tuesday\")); // with leading space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"wednesday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" thursday\")); // with leading space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"friday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\" saturday\")); // with leading space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"sunday \")); // with trailing space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Days.isValidDay(\"monday tuesday\")); // multiple days","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" public void isValidDay_validDay_returnsTrue() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" // valid day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"MONDAY\")); // uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"TUESDAY\")); // uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"WEDNESDAY\")); // uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"thursday\")); // lowercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" assertTrue(Days.isValidDay(\"fridAy\")); // mixedcase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":43}},{"path":"src/test/java/seedu/address/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Feng1231"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Feng1231"},"content":" Email sameEmail \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Feng1231"},"content":" Email differentEmail \u003d new Email(\"other.valid@email\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Feng1231"},"content":" assertEquals(email.hashCode(), sameEmail.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(email.hashCode(), differentEmail.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":12,"-":88}},{"path":"src/test/java/seedu/address/model/person/FeeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"public class FeeTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e generateFee(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" public void constructor_invalidFee_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" String invalidFee \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e generateFee(invalidFee));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" public void isValidFee() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" // null fee","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Fee.isValidFee(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" // invalid fees","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Fee.isValidFee(\"-1.23\")); // negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" // valid fees","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"1\")); // 0 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Fee.isValidFee(\"0\")); // 3 digits","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" public void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" Fee fee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.23\", fee.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" Fee fee2 \u003d generateFee(\"1.0\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.00\", fee2.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" Fee fee3 \u003d generateFee(\"0\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"0.00\", fee3.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" public void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" Fee fee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" Fee sameFee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" Fee differentFee \u003d generateFee(\"2.34\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" assertTrue(fee.equals(sameFee));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" assertTrue(fee.equals(fee));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" assertFalse(fee.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertFalse(fee.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" assertFalse(fee.equals(differentFee));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" Fee fee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" Fee sameFee \u003d generateFee(\"1.23\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":" Fee differentFee \u003d generateFee(\"2.34\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" assertEquals(fee.hashCode(), sameFee.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(fee.hashCode(), differentFee.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" public Fee generateFee(String fee) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" return new Fee(fee) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" };","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":91}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"TY1Fan"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"91234567\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"TY1Fan":1,"-":84}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" Name sameName \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" Name differentName \u003d new Name(\"Other Valid Name\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertEquals(name.hashCode(), sameName.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(name.hashCode(), differentName.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":12,"-":60}},{"path":"src/test/java/seedu/address/model/person/OwedAmountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DennieDan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"public class OwedAmountTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":" assertThrows(NullPointerException.class, () -\u003e new OwedAmount(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DennieDan"},"content":" public void constructor_invalidOwed_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DennieDan"},"content":" String invalidOwedAmount \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new OwedAmount(invalidOwedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" public void isValidOwed() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" // null owed","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" assertThrows(NullPointerException.class, () -\u003e OwedAmount.isValidOwedAmount(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":" // invalid oweds","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"\")); // empty string","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\" \")); // spaces only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DennieDan"},"content":" assertFalse(OwedAmount.isValidOwedAmount(\"-1.23\")); // negative number","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" // valid oweds","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"1\")); // 0 decimal places","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" assertTrue(OwedAmount.isValidOwedAmount(\"0\")); // 3 digits","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DennieDan"},"content":" public void toStringTest() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.23\", owedAmount.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount2 \u003d new OwedAmount(\"1.0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.00\", owedAmount2.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount3 \u003d new OwedAmount(\"0\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"0.00\", owedAmount3.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DennieDan"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" OwedAmount sameOwedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DennieDan"},"content":" OwedAmount differentOwedAmount \u003d new OwedAmount(\"1.24\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" assertTrue(owedAmount.equals(sameOwedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" assertTrue(owedAmount.equals(owedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DennieDan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DennieDan"},"content":" assertFalse(owedAmount.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" assertFalse(owedAmount.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" assertFalse(owedAmount.equals(differentOwedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DennieDan"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DennieDan"},"content":" OwedAmount owedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DennieDan"},"content":" OwedAmount sameOwedAmount \u003d new OwedAmount(\"1.23\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DennieDan"},"content":" OwedAmount differentOwedAmount \u003d new OwedAmount(\"1.24\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DennieDan"},"content":" assertEquals(owedAmount.hashCode(), sameOwedAmount.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DennieDan"},"content":" assertNotEquals(owedAmount.hashCode(), differentOwedAmount.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DennieDan"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"DennieDan":87}},{"path":"src/test/java/seedu/address/model/person/PaidTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"public class PaidTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":" void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Paid(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" void constructor_invalidPaid_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" String invalidPaid \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Paid(invalidPaid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" void isValidPaid() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" // null paid","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Paid.isValidPaid(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" // invalid paids","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Paid.isValidPaid(\"-1.23\")); // negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" // valid paids","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"1\")); // 0 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Paid.isValidPaid(\"0\")); // 3 digits","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" Paid paid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.23\", paid.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" Paid paid2 \u003d new Paid(\"1.0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"1.00\", paid2.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" Paid paid3 \u003d new Paid(\"0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"0.00\", paid3.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" Paid paid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" Paid samePaid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" Paid differentPaid \u003d new Paid(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" assertTrue(paid.equals(samePaid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" assertTrue(paid.equals(paid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.equals(differentPaid));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" Paid paid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" Paid samePaid \u003d new Paid(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":" Paid differentPaid \u003d new Paid(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" assertTrue(paid.hashCode() \u003d\u003d samePaid.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" assertFalse(paid.hashCode() \u003d\u003d differentPaid.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":88}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" /* seems like it is for tag","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" // same name and phone, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" .withAddress(VALID_ADDRESS_BOB).withSchedule(VALID_SCHEDULE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" .withSubject(VALID_SUBJECT_BOB).withRate(VALID_RATE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DennieDan"},"content":" .withAddress(VALID_ADDRESS_BOB).withSchedule(VALID_SCHEDULE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" .withSubject(VALID_SUBJECT_BOB).withRate(VALID_RATE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TY1Fan"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"TY1Fan"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"TY1Fan"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"TY1Fan"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Feng1231"},"content":" // different schedule -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Feng1231"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSchedule(VALID_SCHEDULE_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Feng1231"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Soumyadip-cmd"},"content":" // different subject -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Soumyadip-cmd"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSubject(VALID_SUBJECT_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Soumyadip-cmd"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Soumyadip-cmd"},"content":" // different rate -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Soumyadip-cmd"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRate(VALID_RATE_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DennieDan"},"content":" // different owedAmount -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DennieDan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"TY1Fan"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"TY1Fan"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Soumyadip-cmd"},"content":" + \", schedule\u003d\" + ALICE.getSchedule() + \", subject\u003d\" + ALICE.getSubject()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" + \", rate\u003d\" + ALICE.getRate() + \", paid\u003d\" + ALICE.getPaid()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" + \", owedAmount\u003d\" + ALICE.getOwedAmount() + \"}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Feng1231"},"content":" // same attributes -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Feng1231"},"content":" Person sameAlice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Feng1231"},"content":" assertEquals(ALICE.hashCode(), sameAlice.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Feng1231"},"content":" // different attributes -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Feng1231"},"content":" Person differentPhone \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Feng1231"},"content":" Person differentEmail \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Feng1231"},"content":" Person differentAddress \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Feng1231"},"content":" Person differentName \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Feng1231"},"content":" Person differentPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentPhone.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentEmail.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentAddress.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentName.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(ALICE.hashCode(), differentPerson.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Feng1231":29,"TY1Fan":6,"Soumyadip-cmd":10,"-":87,"DennieDan":16}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 8 numbers","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"TY1Fan"},"content":" assertFalse(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"TY1Fan"},"content":" assertTrue(Phone.isValidPhone(\"63121534\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" assertTrue(Phone.isValidPhone(\"83121534\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" Phone phone \u003d new Phone(\"99999999\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"TY1Fan"},"content":" assertTrue(phone.equals(new Phone(\"99999999\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" assertFalse(phone.equals(new Phone(\"99555555\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" Phone phone \u003d new Phone(\"91234567\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" Phone samePhone \u003d new Phone(\"91234567\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" Phone differentPhone \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertEquals(phone.hashCode(), samePhone.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(phone.hashCode(), differentPhone.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"Feng1231":11,"TY1Fan":7,"-":55}},{"path":"src/test/java/seedu/address/model/person/RateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"public class RateTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Rate(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" void constructor_invalidRate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" String invalidRate \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Rate(invalidRate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" void isValidRate() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" // null rate","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Rate.isValidRate(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" // invalid rates","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"1.234\")); // more than 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"1.2.3\")); // more than 1 decimal point","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" assertFalse(Rate.isValidRate(\"-1.23\")); // negative number","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" // valid rates","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"1\")); // 0 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"1.2\")); // 1 decimal place","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"123.23\")); // 2 decimal places","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" assertTrue(Rate.isValidRate(\"0\")); // 3 digits","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" Rate rate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.23\", rate.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" Rate rate2 \u003d new Rate(\"1.0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"1.00\", rate2.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" Rate rate3 \u003d new Rate(\"0\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" assertEquals(\"0.00\", rate3.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" Rate rate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" Rate sameRate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" Rate differentRate \u003d new Rate(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" assertTrue(rate.equals(sameRate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" assertTrue(rate.equals(rate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" assertFalse(rate.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" assertFalse(rate.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":" assertFalse(rate.equals(differentRate));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":" Rate rate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":" Rate sameRate \u003d new Rate(\"1.23\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" Rate differentRate \u003d new Rate(\"1.24\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" assertEquals(rate.hashCode(), sameRate.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(rate.hashCode(), differentRate.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":87,"DennieDan":3}},{"path":"src/test/java/seedu/address/model/person/ScheduleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"class ScheduleTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Schedule(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":" public void constructor_invalidSchedule_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" String invalidSchedule \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Schedule(invalidSchedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" // null schedule","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidSchedule(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_invalidFormat_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" // invalid schedules","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday\")); // single day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1200-1300-1400\")); // extra time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_invalidDay_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Feng1231"},"content":" // invalid day","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"mon-1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday1-1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" // extra space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday -1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\" monday-1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\" monday -1200-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_invalidTime_returnsFalse() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":" // invalid time range","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-1300\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-1200\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":" // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1200-130\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-1360\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300-2400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" // extra space","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300- 1400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday-1300 -1400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidSchedule(\"monday- 1300 - 1400\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":" public void isValidSchedule_validSchedule_returnsTrue() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidSchedule(\"monday-1200-1300\")); // single day and time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidSchedule(\"FRIDAY-2350-2359\")); // day in uppercase","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidSchedule(\"satUrDay-0000-2359\")); // day in mixed case","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Feng1231"},"content":" public void isValidTime() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Feng1231"},"content":" // null time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidTime(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Feng1231"},"content":" // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"123\")); // wrong length","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"12345\")); // wrong length","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"12:34\")); // wrong format","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"2400\")); // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTime(\"2360\")); // invalid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Feng1231"},"content":" // valid time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidTime(\"0000\")); // minimum time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidTime(\"2359\")); // maximum time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Feng1231"},"content":" public void isValidTimeRange() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Feng1231"},"content":" // null time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidTimeRange(null, null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Feng1231"},"content":" // invalid time range","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTimeRange(\"1200\", \"1200\")); // same time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Feng1231"},"content":" assertFalse(Schedule.isValidTimeRange(\"1300\", \"1200\")); // start time after end time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Feng1231"},"content":" // valid time range","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Feng1231"},"content":" assertTrue(Schedule.isValidTimeRange(\"1200\", \"1300\")); // start time before end time","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Feng1231"},"content":" public void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Feng1231"},"content":" Schedule schedule \u003d new Schedule(\"monday-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Feng1231"},"content":" Schedule sameSchedule \u003d new Schedule(\"monDay-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Feng1231"},"content":" Schedule differentSchedule \u003d new Schedule(\"monday-1300-1400\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Feng1231"},"content":" assertTrue(schedule.equals(sameSchedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Feng1231"},"content":" assertTrue(schedule.equals(schedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Feng1231"},"content":" assertFalse(schedule.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Feng1231"},"content":" assertFalse(schedule.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Feng1231"},"content":" assertFalse(schedule.equals(differentSchedule));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Feng1231"},"content":" public void toStringTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Feng1231"},"content":" Schedule schedule \u003d new Schedule(\"monday-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"MONDAY 12:00 - 13:00\", schedule.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Feng1231"},"content":" schedule \u003d new Schedule(\"FRIDaY-0000-2359\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Feng1231"},"content":" assertEquals(\"FRIDAY 00:00 - 23:59\", schedule.toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Feng1231"},"content":" Schedule schedule \u003d new Schedule(\"monday-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Feng1231"},"content":" Schedule sameSchedule \u003d new Schedule(\"monDay-1200-1300\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Feng1231"},"content":" Schedule differentSchedule \u003d new Schedule(\"monday-1300-1400\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Feng1231"},"content":" assertEquals(schedule.hashCode(), sameSchedule.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(schedule.hashCode(), differentSchedule.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":146}},{"path":"src/test/java/seedu/address/model/person/SubjectTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Feng1231"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Feng1231"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Feng1231"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Feng1231"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Feng1231"},"content":"class SubjectTest {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Feng1231"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e new Subject(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Feng1231"},"content":" public void constructor_invalidSubject_throwsIllegalArgumentException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Feng1231"},"content":" String invalidSubject \u003d \"\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Feng1231"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Subject(invalidSubject));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Feng1231"},"content":" public void isValidSubject() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Feng1231"},"content":" // null subject","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Feng1231"},"content":" assertThrows(NullPointerException.class, () -\u003e Subject.isValidSubject(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Feng1231"},"content":" // invalid subjects","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Feng1231"},"content":" assertFalse(Subject.isValidSubject(\"\")); // empty string","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Feng1231"},"content":" assertFalse(Subject.isValidSubject(\" \")); // spaces only","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Feng1231"},"content":" assertFalse(Subject.isValidSubject(\"invalid\")); // invalid subject","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Soumyadip-cmd"},"content":" assertFalse(Subject.isValidSubject(\"Physical education\")); // subject not supported","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Feng1231"},"content":" // valid subjects","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Feng1231"},"content":" assertTrue(Subject.isValidSubject(\"economics\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Feng1231"},"content":" assertTrue(Subject.isValidSubject(\"Biology\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Feng1231"},"content":" assertTrue(Subject.isValidSubject(\"eNglish\"));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Soumyadip-cmd"},"content":" assertTrue(Subject.isValidSubject(\"mathematics\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Feng1231"},"content":" public void equals() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Feng1231"},"content":" Subject subject \u003d new Subject(\"economics\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Feng1231"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Feng1231"},"content":" assertTrue(subject.equals(new Subject(\"economics\")));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Feng1231"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Feng1231"},"content":" assertTrue(subject.equals(subject));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Feng1231"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Feng1231"},"content":" assertFalse(subject.equals(null));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Feng1231"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Feng1231"},"content":" assertFalse(subject.equals(5.0f));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Feng1231"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Feng1231"},"content":" assertFalse(subject.equals(new Subject(\"biology\")));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Feng1231"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Feng1231"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Feng1231"},"content":" Subject subject \u003d new Subject(\"economics\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Feng1231"},"content":" Subject otherSubject \u003d new Subject(\"economics\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Feng1231"},"content":" Subject differentSubject \u003d new Subject(\"biology\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Feng1231"},"content":" assertEquals(subject.hashCode(), subject.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Feng1231"},"content":" assertEquals(subject.hashCode(), otherSubject.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Feng1231"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Feng1231"},"content":" assertNotEquals(subject.hashCode(), differentSubject.hashCode());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Feng1231"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toString_validSubject_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Soumyadip-cmd"},"content":" // Test case for a valid subject","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject subject \u003d new Subject(\"mathematics\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Soumyadip-cmd"},"content":" assertEquals(\"MATHEMATICS\", subject.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Soumyadip-cmd"},"content":" Subject subject2 \u003d new Subject(\"biology\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Soumyadip-cmd"},"content":" assertEquals(\"BIOLOGY\", subject2.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Feng1231"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"Feng1231":74,"Soumyadip-cmd":12}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Feng1231"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Feng1231":2,"-":172}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TY1Fan"},"content":" private static final String INVALID_SCHEDULE \u003d \"Anyday 7pm-9pm\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Soumyadip-cmd"},"content":" private static final String INVALID_SUBJECT \u003d \"PHYSICAL EDUCATION\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DennieDan"},"content":" private static final String INVALID_RATE \u003d \"123.23/h\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DennieDan"},"content":" private static final String INVALID_PAID \u003d \" \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DennieDan"},"content":" private static final String INVALID_OWED_AMOUNT \u003d \" \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Soumyadip-cmd"},"content":" private static final String VALID_SUBJECT \u003d BENSON.getSubject().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_SCHEDULE \u003d BENSON.getSchedule().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_RATE \u003d BENSON.getRate().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_PAID \u003d BENSON.getPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" private static final String VALID_OWED_AMOUNT \u003d BENSON.getOwedAmount().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DennieDan"},"content":" null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, VALID_PAID,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DennieDan"},"content":" VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE, VALID_SUBJECT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DennieDan"},"content":" VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_SCHEDULE, VALID_SUBJECT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"DennieDan"},"content":" VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_SCHEDULE, VALID_SUBJECT,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"DennieDan"},"content":" VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"TY1Fan"},"content":" public void toModelType_invalidSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"TY1Fan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"TY1Fan"},"content":" String expectedMessage \u003d Schedule.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"TY1Fan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"TY1Fan"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"TY1Fan"},"content":" public void toModelType_nullSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"DennieDan"},"content":" VALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"TY1Fan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Schedule.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toModelType_invalidSubject_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Soumyadip-cmd"},"content":" new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"DennieDan"},"content":" INVALID_SUBJECT, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Soumyadip-cmd"},"content":" String expectedMessage \u003d Subject.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Soumyadip-cmd"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toModelType_nullSubject_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Soumyadip-cmd"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SCHEDULE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"DennieDan"},"content":" null, VALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Soumyadip-cmd"},"content":" );","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Soumyadip-cmd"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Subject.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Soumyadip-cmd"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Soumyadip-cmd"},"content":" public void toModelType_invalidRate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, INVALID_RATE, VALID_PAID, VALID_OWED_AMOUNT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"DennieDan"},"content":" );","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"Soumyadip-cmd"},"content":" String expectedMessage \u003d Rate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Soumyadip-cmd"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Soumyadip-cmd"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"DennieDan"},"content":" public void toModelType_nullRate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, null, VALID_PAID, VALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Rate.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"DennieDan"},"content":" public void toModelType_invalidOwedAmount_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, VALID_PAID, INVALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d OwedAmount.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"DennieDan"},"content":" public void toModelType_nullOwedAmount_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, VALID_PAID, null);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, OwedAmount.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"DennieDan"},"content":" public void toModelType_invalidPaid_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, INVALID_PAID, VALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d Paid.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"DennieDan"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"DennieDan"},"content":" public void toModelType_nullPaid_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"DennieDan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"DennieDan"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"DennieDan"},"content":" VALID_SCHEDULE, VALID_SUBJECT, VALID_RATE, null, VALID_OWED_AMOUNT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"DennieDan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Paid.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"DennieDan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"TY1Fan":11,"Soumyadip-cmd":44,"-":91,"DennieDan":79}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"TY1Fan"},"content":" descriptor.setSchedule(person.getSchedule());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Soumyadip-cmd"},"content":" descriptor.setSubject(person.getSubject());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" descriptor.setRate(person.getRate());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" descriptor.setPaid(person.getPaid());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" descriptor.setOwedAmount(person.getOwedAmount());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"TY1Fan"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"TY1Fan"},"content":" public EditPersonDescriptorBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"TY1Fan"},"content":" descriptor.setSchedule(new Schedule(schedule));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"TY1Fan"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Soumyadip-cmd"},"content":" * Sets the {@code Subject} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Soumyadip-cmd"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Soumyadip-cmd"},"content":" public EditPersonDescriptorBuilder withSubject(String subject) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Soumyadip-cmd"},"content":" descriptor.setSubject(new Subject(subject));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Soumyadip-cmd"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Rate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DennieDan"},"content":" public EditPersonDescriptorBuilder withRate(String rate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DennieDan"},"content":" descriptor.setRate(new Rate(rate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Paid} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"DennieDan"},"content":" public EditPersonDescriptorBuilder withPaid(String paid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"DennieDan"},"content":" descriptor.setPaid(new Paid(paid));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code OwedAmount} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DennieDan"},"content":" public EditPersonDescriptorBuilder withOwedAmount(String owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DennieDan"},"content":" descriptor.setOwedAmount(new OwedAmount(owedAmount));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":9,"Soumyadip-cmd":11,"-":76,"DennieDan":24}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.OwedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import seedu.address.model.person.Rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TY1Fan"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Soumyadip-cmd"},"content":"import seedu.address.model.person.Subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TY1Fan"},"content":" public static final String DEFAULT_SCHEDULE \u003d \"Sunday-1800-1900\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Soumyadip-cmd"},"content":" public static final String DEFAULT_SUBJECT \u003d \"Mathematics\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DennieDan"},"content":" public static final String DEFAULT_FEE \u003d \"300\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DennieDan"},"content":" public static final String DEFAULT_PAID \u003d \"600\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DennieDan"},"content":" public static final String DEFAULT_OWED_AMOUNT \u003d \"300\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"TY1Fan"},"content":" private Schedule schedule;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":" private Subject subject;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" private Rate rate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DennieDan"},"content":" private Paid paid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DennieDan"},"content":" private OwedAmount owedAmount;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"TY1Fan"},"content":" schedule \u003d new Schedule(DEFAULT_SCHEDULE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Soumyadip-cmd"},"content":" subject \u003d new Subject(DEFAULT_SUBJECT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DennieDan"},"content":" rate \u003d new Rate(DEFAULT_FEE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" paid \u003d new Paid(DEFAULT_PAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d new OwedAmount(DEFAULT_OWED_AMOUNT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" schedule \u003d personToCopy.getSchedule();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Soumyadip-cmd"},"content":" subject \u003d personToCopy.getSubject();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DennieDan"},"content":" rate \u003d personToCopy.getRate();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DennieDan"},"content":" paid \u003d personToCopy.getPaid();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" owedAmount \u003d personToCopy.getOwedAmount();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"TY1Fan"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"TY1Fan"},"content":" * Sets the {@code Schedule} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"TY1Fan"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"TY1Fan"},"content":" public PersonBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"TY1Fan"},"content":" this.schedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"TY1Fan"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"TY1Fan"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"TY1Fan"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Soumyadip-cmd"},"content":" * Sets the {@code Subject} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Soumyadip-cmd"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Soumyadip-cmd"},"content":" public PersonBuilder withSubject(String subject) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Soumyadip-cmd"},"content":" this.subject \u003d new Subject(subject);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Soumyadip-cmd"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Soumyadip-cmd"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Soumyadip-cmd"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Soumyadip-cmd"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Rate} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"DennieDan"},"content":" public PersonBuilder withRate(String rate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"DennieDan"},"content":" this.rate \u003d new Rate(rate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code Paid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"DennieDan"},"content":" public PersonBuilder withPaid(String paid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"DennieDan"},"content":" this.paid \u003d new Paid(paid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"DennieDan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"DennieDan"},"content":" * Sets the {@code OwedAmount} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"DennieDan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"DennieDan"},"content":" public PersonBuilder withOwedAmount(String owedAmount) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"DennieDan"},"content":" this.owedAmount \u003d new OwedAmount(owedAmount);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"DennieDan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"DennieDan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"DennieDan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"DennieDan"},"content":" return new Person(name, phone, email, address, schedule, subject, rate, paid, owedAmount);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"TY1Fan":13,"Soumyadip-cmd":14,"-":80,"DennieDan":39}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_OWED_AMOUNT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PAID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Soumyadip-cmd"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"TY1Fan"},"content":" sb.append(PREFIX_SCHEDULE + person.getSchedule().value + \" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Soumyadip-cmd"},"content":" sb.append(PREFIX_SUBJECT + person.getSubject().toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DennieDan"},"content":" sb.append(PREFIX_RATE + person.getRate().toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DennieDan"},"content":" sb.append(PREFIX_PAID + person.getPaid().toString() + \" \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" sb.append(PREFIX_OWED_AMOUNT + person.getOwedAmount().toString() + \" \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"TY1Fan"},"content":" descriptor.getSchedule().ifPresent(schedule -\u003e sb.append(PREFIX_SCHEDULE).append(schedule.value).append(\" \"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Soumyadip-cmd"},"content":" descriptor.getSubject().ifPresent(subject -\u003e sb.append(PREFIX_SUBJECT).append(subject.toString()).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DennieDan"},"content":" descriptor.getRate().ifPresent(rate -\u003e sb.append(PREFIX_RATE).append(rate.toString()).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" descriptor.getPaid().ifPresent(paid -\u003e sb.append(PREFIX_PAID).append(paid.toString()).append(\" \"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DennieDan"},"content":" descriptor.getOwedAmount().ifPresent(owedAmount -\u003e sb.append(PREFIX_OWED_AMOUNT)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DennieDan"},"content":" .append(owedAmount.toString()).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"TY1Fan":3,"Soumyadip-cmd":3,"-":47,"DennieDan":10}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_OWED_AMOUNT_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PAID_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PAID_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DennieDan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RATE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TY1Fan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Soumyadip-cmd"},"content":" .withPhone(\"94351253\").withSchedule(\"Sunday-1800-1900\").withSubject(\"Economics\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DennieDan"},"content":" .withRate(\"250.50\").withPaid(\"0\").withOwedAmount(\"250.50\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Soumyadip-cmd"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withSchedule(\"Monday-1800-1900\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DennieDan"},"content":" .withSubject(\"Mathematics\").withRate(\"100.80\").withPaid(\"201.6\").withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Tuesday-1800-1900\").withSubject(\"Mathematics\").withRate(\"300\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"1200\").withOwedAmount(\"900\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Wednesday-1800-1900\").withSubject(\"Mathematics\").withRate(\"450.5\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"450.5\").withOwedAmount(\"901.00\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"TY1Fan"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"94802224\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Thursday-1800-1900\").withSubject(\"Mathematics\").withRate(\"350\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"2800\").withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TY1Fan"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"94824270\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Friday-1800-1900\").withSubject(\"Mathematics\").withRate(\"260.25\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DennieDan"},"content":" .withPaid(\"0\").withOwedAmount(\"520.50\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TY1Fan"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"94824420\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Soumyadip-cmd"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withSchedule(\"Saturday-1800-1900\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DennieDan"},"content":" .withSubject(\"Mathematics\").withRate(\"120\").withPaid(\"1200\").withOwedAmount(\"0\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"TY1Fan"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"84820424\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Sunday-1800-1900\").withRate(\"200\").withPaid(\"8000\").withOwedAmount(\"1000\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"TY1Fan"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"84820131\")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"TY1Fan"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DennieDan"},"content":" .withSchedule(\"Monday-1800-1900\").withRate(\"450\").withPaid(\"900\").withOwedAmount(\"900\").build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DennieDan"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DennieDan"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DennieDan"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withSchedule(VALID_SCHEDULE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DennieDan"},"content":" .withRate(VALID_RATE_AMY).withPaid(VALID_PAID_AMY).withOwedAmount(VALID_OWED_AMOUNT_AMY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DennieDan"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DennieDan"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DennieDan"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withSchedule(VALID_SCHEDULE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DennieDan"},"content":" .withRate(VALID_RATE_BOB).withPaid(VALID_PAID_BOB).withOwedAmount(VALID_OWED_AMOUNT_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"TY1Fan":13,"Soumyadip-cmd":3,"-":53,"DennieDan":27}}] diff --git a/AY2425S1-CS2103T-F14a-1_tp_master/commits.json b/AY2425S1-CS2103T-F14a-1_tp_master/commits.json index a0ad16c7..4a9bf1a7 100644 --- a/AY2425S1-CS2103T-F14a-1_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14a-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Feng1231":[{"date":"2024-09-20","commitResults":[{"hash":"816e32fd48b189cdc4d5874f830dbd9153db5ba8","isMergeCommit":false,"messageTitle":"Test commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"31c54687863b69a2d3e6710a398951a12b9aa83f","isMergeCommit":true,"messageTitle":"Merge pull request #8 from Feng1231/add-chenFeng-info","messageBody":"Add Chen Feng photo","fileTypesAndContributionMap":{}},{"hash":"62a2c84e90e34938ca5ebcdf75fb0955fc0866a6","isMergeCommit":true,"messageTitle":"Merge pull request #9 from DennieDan/add-dan-photo","messageBody":"Add Dan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"5e7bef32aff7b64ad32c15a773b275ead96aaf21","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}},{"hash":"29b08c02e221e6a9b35aac2277c095a940dc00be","isMergeCommit":true,"messageTitle":"Merge pull request #18 from TY1Fan/add-yifan-aboutus","messageBody":"Add Yi Fan\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"2308a497fd99c39d8562021caea1ae3ffc306832","isMergeCommit":true,"messageTitle":"Merge pull request #20 from DennieDan/add-dan-aboutus","messageBody":"Add Dan\u0027s AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-09-23","commitResults":[{"hash":"f903f8653a9233eb92e25c66fdeeaaab35b4ed0d","isMergeCommit":false,"messageTitle":"README.md: Update content to match project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":8}}},{"hash":"896bcc9f85d0b496fa0279893d868b1822ca0d28","isMergeCommit":false,"messageTitle":"Update DG Target user profile, value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}},{"hash":"0186330c345b2f30e0b65ac334420c6ada513dc6","isMergeCommit":false,"messageTitle":"Update DG Target user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"c3e02af06ba655783a1d2c870f3a7bbf76062981","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-24","commitResults":[{"hash":"655d3d1221cb35db2550220e4895c835a96c88a4","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Feng1231/update-readme-docs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"623506dc2acdb20615556df01c484c1629b8a8df","isMergeCommit":true,"messageTitle":"Merge pull request #50 from TY1Fan/branch-update-readme","messageBody":"Update UI mockup","fileTypesAndContributionMap":{}},{"hash":"b3c27a0a06118531083c95f555ea518e52ff216d","isMergeCommit":false,"messageTitle":"Add Subject class","messageBody":"Person class requires a Subject attribute to be added to it.\nSubject needs to be a defined set of values.\n\nLets:\n- Add a Subject class to represent the Subject attribute\n- Add a Subjects enum to define the set of values for Subject\n- Add a Subject test class to test the Subject class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":0},"test-code":{"insertions":58,"deletions":0}}},{"hash":"5994c42af8fc1db16e7f4ee1a0def965587c65b6","isMergeCommit":false,"messageTitle":"Add hashCodeTest for SubjectTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"fa36287e2918e773e710acdf981fff2d5cec49b6","isMergeCommit":false,"messageTitle":"Add Days enum and Schedule class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":0}}},{"hash":"2dba611a9523683ec0196d074070ba041f4304af","isMergeCommit":false,"messageTitle":"Add Test class for Days","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"6a3de3e3d8764285b569bbb5dc28ba143a96fc4e","isMergeCommit":false,"messageTitle":"Schedule.java: Disallow 2400 for time","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"f5f0b7e155eda2df2e71c894c8a2142920e31936","isMergeCommit":false,"messageTitle":"Schedule.java: Override toString, equals and hashCode","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"1edd624fd9aa99dd71252c0f388a4be76e6759d7","isMergeCommit":false,"messageTitle":"Schedule.java: update getDayComponent method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d9de431052d8620d8242d37c68f620c25477e7be","isMergeCommit":false,"messageTitle":"Add test class for Schedule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":146,"deletions":0}}},{"hash":"bec77ac7f83bafee114ee7d99e70b3180914c053","isMergeCommit":false,"messageTitle":"Schedule.java: Update hashCode to use Objects::hash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"8e50e204cd8d7da656fdc43183cf8bcb15820b71","isMergeCommit":false,"messageTitle":"Add Fee class and Test class for Fee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0},"test-code":{"insertions":89,"deletions":0}}},{"hash":"ff605ebfde01eb62f3cddbfbf3148e513d0ca5b5","isMergeCommit":false,"messageTitle":"Import assertThrows from own package instead of junit","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"82f7f81e6849858e079e8cb8e8fb67cd5fc9c404","isMergeCommit":false,"messageTitle":"Import assertThrows from own package instead of junit","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"88838349a9aa492a31df692c7dc4fd0bdb31bb69","isMergeCommit":false,"messageTitle":"Add subclass of Fee","messageBody":"Fee represents a double amount with at most\n2 decimal places\nPerson class requires Rate, Owed, Paid\nattribute to be added to it. Each of them\nis a double amount with at most 2 decimal\nplaces.\n\nLets:\n- Add a Fee class\n- Add Owed, Paid, Rate classes which are\nsubclasses of Fee\n","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":3}}},{"hash":"b03fbe2d859d58f2319418eff4edf2ded217a000","isMergeCommit":false,"messageTitle":"Add test classes for Owed, Paid, Rate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":225,"deletions":4}}},{"hash":"f01b16907f30a25b149a0387f11f0e4a5dbe0e28","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into add-fee-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a2d774633d98e55a0ca7231bde137aa9e74869e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into add-subject-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1e18aaf67c3e41fd1532600a939ba35ebc406bff","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into add-time-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9de42f13a18e1a3df73cb96bbd8c423006afb062","isMergeCommit":false,"messageTitle":"Update test classes for Owed, Paid, Rate","messageBody":"Add in hashcode testings for Owed, Paid, Rate classes\nRefactor some test cases to use common variables\nInstead of magic literals\n\nThis improves test coverage and readability\n","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":6}}},{"hash":"623cf9fb9c2f6890f8f2019105e43fe8fcdc4e5f","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-fee-attribute\u0027 of https://github.com/Feng1231/tp into add-fee-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e45d723b226029d2bb1b14d4502a8b09d0fce983","isMergeCommit":false,"messageTitle":"Remove tag attribute and related code","messageBody":"Tag attribute is not needed for our project.\n\nLets:\n- Remove tag class\n- Remove constants defined for tag class\n- Remove tag Cli syntax\n- Remove tag related methods\n- Remove tag attribute in Person class and sample data\n- Remove utils for tag\n- Remove tag related tests in all classes\n\nCode that could be reused in the future is commented out.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":278},"test-code":{"insertions":54,"deletions":270}}}]},{"date":"2024-10-04","commitResults":[{"hash":"118d12a21359da84602df97204f880e461f0ad43","isMergeCommit":false,"messageTitle":"Update Fee class to be abstract","messageBody":"Fee class is instantiable.\n\nPreventing instantiation of Fee class improves the principle\nof abstraction.\n\nTo prevent instantiation of Fee class, lets:\n- Change Fee class to abstract class\n- Update FeeTest class to be able to test the abstract class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":17,"deletions":15}}}]},{"date":"2024-10-08","commitResults":[{"hash":"5d4d70b869a6019abfbbba8bf2f587df70e7f9d5","isMergeCommit":false,"messageTitle":"Update PersonTest method to test Schedule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7d9d3598d9963bdc88e1583bff3f5af2698b9b94","isMergeCommit":true,"messageTitle":"Merge pull request #69 from teamotitan/Add-Income-Command","messageBody":"Add IncomeCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"89792e6dcc1fa92846455f230a76bfb7d0f07fdb","isMergeCommit":false,"messageTitle":"Add test coverage to person package","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":70,"deletions":8}}}]}],"TY1Fan":[{"date":"2024-09-20","commitResults":[{"hash":"e04b55ed71b0eb7a5f0b99b81187ebd03c0ba2d4","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"62a94129853bc7dfb8f35272b271c2fd57b03d65","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Feng1231/add-chenFeng-name","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-09-23","commitResults":[{"hash":"d0da763c434828bb2c9e8efd3e9ff19f002c1df4","isMergeCommit":false,"messageTitle":"Add acknowledgement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"af539ebae8dc1b740c3ada496f3611fc0c2d591a","isMergeCommit":false,"messageTitle":"Fix spaces","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"28fbd411c6371ba80bd0d20d2b99c964b430a2a9","isMergeCommit":false,"messageTitle":"Add newline at eof","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f131806fb2b380adaff4707a5c29c8a3d8c6c739","isMergeCommit":false,"messageTitle":"Update user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":9}}}]},{"date":"2024-09-24","commitResults":[{"hash":"bb7bf7eff239ec55fc99d9fd0fef852d0c3798db","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Feng1231/update-dg","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"26d23ac44fcdf310f8a4a9b1a4bb7abf2281cbaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"39304bab15842916081f10daca8f150f3965b33f","isMergeCommit":true,"messageTitle":"Merge pull request #40 from TY1Fan/branch-update-readme","messageBody":"Update Readme.md","fileTypesAndContributionMap":{}},{"hash":"156ad6345e5fd25df00ef71241c7b7c434ce4db9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from TY1Fan/branch-update-DG","messageBody":"Update user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-09-25","commitResults":[{"hash":"fe75f943500998c9176bbc204f7565ba2bb5e844","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix a typo mistake\n Fix minor ambiguity\n Sort NFRs into types\n Update README.md\n Update user stories\n Delete Tutorials embedded links\n Change Github repo URL\n Add newline at eof\n Fix spaces\n Add acknowledgement\n Update ui\n Add 10 NFRs\n Update DG Target user stories\n Update DG Target user profile, value proposition\n README.md: Update content to match project\n Update README.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-09-26","commitResults":[{"hash":"9cb12ceee2348572f2bbb7a0ea3047921e17807b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp into branch-update-readme","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix a typo mistake\n Fix minor ambiguity\n Sort NFRs into types\n Update README.md\n Update user stories\n Delete Tutorials embedded links\n Change Github repo URL\n Add 10 NFRs\n Update DG Target user stories\n Update DG Target user profile, value proposition\n README.md: Update content to match project\n Update README.md\n","fileTypesAndContributionMap":{}},{"hash":"ea1eed3f9cbd309422d872c5197a49724fd02143","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"a6f75e8df0bc30291dde6a6637d94e651ef92c06","isMergeCommit":true,"messageTitle":"Merge pull request #49 from TY1Fan/branch-update-readme","messageBody":"Fix bug with duplicate header for acknowledgement","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"44e69642227248a03df542c4e20cdfe25c2695c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix bugs in use cases in DG\n Fix bugs\n Add use cases\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"62e3a44e259cc8a6b0b94cbb456fbe8c1ea87153","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Feng1231/delete-tag-attribute","messageBody":"Delete tag attribute and related code","fileTypesAndContributionMap":{}},{"hash":"6ec843a9f88075748f7db9c2d83cc4e799896cae","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8d03b3712e6db8f49139d77d01d425bd3bcf0a48","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Update Fee class to be abstract\n Remove tag attribute and related code\n Update test classes for Owed, Paid, Rate\n Add test classes for Owed, Paid, Rate\n Add subclass of Fee\n Import assertThrows from own package instead of junit\n Import assertThrows from own package instead of junit\n Add Fee class and Test class for Fee\n Schedule.java: Update hashCode to use Objects::hash\n Add test class for Schedule\n Schedule.java: update getDayComponent method\n Schedule.java: Override toString, equals and hashCode\n Schedule.java: Disallow 2400 for time\n Add Test class for Days\n Add Days enum and Schedule class\n Add hashCodeTest for SubjectTest\n Add Subject class\n Update UI mockup\n Edit Glossary\n Edited the glossary of the developer guide to include more terms\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"ad8b6d93c123c194847cf2a76b37e13db8800f90","isMergeCommit":false,"messageTitle":"Add support for schedule","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":24},"test-code":{"insertions":25,"deletions":8}}},{"hash":"0d112382605eea49fd928e70f5fafdb1eea9100e","isMergeCommit":false,"messageTitle":"Fix style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":8}}},{"hash":"98cc09bb02f1bb534ac7e02c487f5355798e717a","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":12}}},{"hash":"26ed22ec8948cb7f01bc2c39dc7bfb17fb54f776","isMergeCommit":false,"messageTitle":"Fix test style issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":78,"deletions":33}}},{"hash":"f7df87f30b5ada29a7ac4950320041070aca9565","isMergeCommit":false,"messageTitle":"Fix failing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2},"test-code":{"insertions":17,"deletions":11}}}]},{"date":"2024-10-08","commitResults":[{"hash":"0016b3beb1f5d6d203c99a495aea8c427110081d","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Feng1231/update-person-test-for-schedule","messageBody":"Update PersonTest method to test Schedule","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"f143f2b4ddb9be140aa5591c74ec2444cf77ca21","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Update PersonTest method to test Schedule\n Fix failing test cases\n Fix test style issue\n Update test files\n Fix style issue\n Add support for schedule\n","fileTypesAndContributionMap":{}},{"hash":"cfb07c85432620feb88066bdb71905e1256a2f56","isMergeCommit":true,"messageTitle":"Merge pull request #75 from DennieDan/branch-add-fee","messageBody":"Update add and edit command with /fee","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"e8bd90481217bca07e9dcacad3f0e9a85e3fddd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d3b093b34fb6a4668500ec409d4a46e38c3e79eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix bug in JsonAdaptedPersonTest\n Fix bugs in tests\n Update format for subject constraints message\n Update editCommandParser with subject\n Fix bugs in LogicManagerTest\n Update add and edit command to include subject\n Fix checkStyle bugs\n Modify Test Cases\n Fix coding style bug for CI MacOS\n Fix checkstyle bug\n Fix import coding style in AddCommandParser.java\n Update add and edit command with /fee\n Fixed checkstyle error\n Deleted some imports and indentations\n Add IncomeCommand\n","fileTypesAndContributionMap":{}},{"hash":"d0edd3de242ffd543149a3c48fc65bd50786db82","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp into update-number","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix bug in JsonAdaptedPersonTest\n Fix bugs in tests\n Update format for subject constraints message\n Update editCommandParser with subject\n Fix bugs in LogicManagerTest\n Update add and edit command to include subject\n Fix checkStyle bugs\n Modify Test Cases\n Fix coding style bug for CI MacOS\n Fix checkstyle bug\n Fix import coding style in AddCommandParser.java\n Update add and edit command with /fee\n Fixed checkstyle error\n Deleted some imports and indentations\n Add IncomeCommand\n","fileTypesAndContributionMap":{}},{"hash":"8c97d910c782de57c3da70c2493cfb04500ccfd2","isMergeCommit":false,"messageTitle":"Update phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":5,"deletions":2}}},{"hash":"be2ffcfe63d3787024d364f5e3ddf4386e944ec1","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"68b7078f9709ed940ac6a8931151150556ecf508","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-number\u0027 of https://github.com/TY1Fan/tp into update-prefix","messageBody":"* \u0027update-number\u0027 of https://github.com/TY1Fan/tp:\n Fix test cases\n Update phone\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"b0e1ea6a0d413e20dab19862f043f060ae7fb34a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix test cases\n Update phone\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"e0b652b3930afeafccd01fb2d1357426a5b8ad67","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03887044ed1b24be9ec5a6d485d320a190446a78","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix checkstyle bugs\n Fix indentification\n Update same phone to be considered as same person\n Fix coding style bug\n Update test cases\n Update add and edit command with OwedAmount\n Rename Owed to OwedAmount\n Remove default constructor of Fee\n Delete whitespaces\n Fix checkstyle coding style\n Update all tests\n Update add and edit command with paid\n Update default constructor for Fee and Paid\n","fileTypesAndContributionMap":{}},{"hash":"cf94b14eb099e453b865cc59c0d2d5d822f5e795","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp into update-prefix","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix checkstyle bugs\n Fix indentification\n Update same phone to be considered as same person\n Fix coding style bug\n Update test cases\n Update add and edit command with OwedAmount\n Rename Owed to OwedAmount\n Remove default constructor of Fee\n Delete whitespaces\n Fix checkstyle coding style\n Update all tests\n Update add and edit command with paid\n Update default constructor for Fee and Paid\n","fileTypesAndContributionMap":{}},{"hash":"03bd946879ba4e04e3e5edb91a0f20e1fbfaf744","isMergeCommit":false,"messageTitle":"Update prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}}]}],"teamotitan":[{"date":"2024-09-20","commitResults":[{"hash":"9a5b6942bcd4dc61e6f2bc15f8d88c49484ff355","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"413934ed17ca37253fda8d158ff651eed74161a9","isMergeCommit":true,"messageTitle":"Merge pull request #11 from teamotitan/add-Timothy-photo","messageBody":"Add Timothy\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"469c9986f927a1f3dc7435a2cad3a6575e6d7252","isMergeCommit":false,"messageTitle":"Updated AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"36025fb165be1fd4cf694887cc5c9fa68893f75e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-Timothy-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"16b53a8bdec4b8ae20ec61d832186d6c80acfafe","isMergeCommit":true,"messageTitle":"Merge pull request #21 from teamotitan/add-Timothy-AboutUs","messageBody":"Add Timothy\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"d920d5ed1e58b04de102b91c7fa72f2f3907154a","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-26","commitResults":[{"hash":"eb41f8c6d4c665dc219cea051ed7dc9e2b09a5ea","isMergeCommit":false,"messageTitle":"Edited the glossary of the developer guide to include more terms","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-09-27","commitResults":[{"hash":"a4f3027c5d5091a2937e94133fd1ef79161a6c76","isMergeCommit":false,"messageTitle":"Edit Glossary","messageBody":"Made some minor fixes where I capitalize some letters\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-06","commitResults":[{"hash":"768ee360dad557231bb664901b69637a84db4080","isMergeCommit":false,"messageTitle":"Add IncomeCommand","messageBody":"currently, there is no command to show the money owed and money earned\nby the user\n\ncreated a new income command that shows the total money earned and\ntotal money owed by the user\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"8ae6aa5b36c892c67715b957347cd03d1e0208f4","isMergeCommit":false,"messageTitle":"Deleted some imports and indentations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9}}},{"hash":"bea101b642e347bc7379c53f57e11a761b10e4ff","isMergeCommit":false,"messageTitle":"Fixed checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":9}}}]}],"Soumyadip-cmd":[{"date":"2024-09-20","commitResults":[{"hash":"7a4a9ea23601b7dfdbdfdf5420550a6ba58eb336","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Soumyadip-cmd/add-Soumyadip-photo","messageBody":"Add Soumyadip\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"1886c815042c69e4cfe54b551ca956e8d37bd728","isMergeCommit":false,"messageTitle":"Add Soumyadip AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"6bd03018768ed5fb40bda46701835de17ed72d91","isMergeCommit":true,"messageTitle":"Resolve conflict in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"867042190c4eb28abda78859fd2fac678005642a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of origin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9891226d621cf2b50f3b13d1650ab4a6d9859f7","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Soumyadip-cmd/add-soumyadip-aboutUs","messageBody":"Add Soumyadip AboutUs","fileTypesAndContributionMap":{}},{"hash":"d8a0f5f83ad265f1c47bcf148f5ef7d5436ff2f2","isMergeCommit":true,"messageTitle":"Merge pull request #23 from AY2425S1-CS2103T-F14a-1/teamotitan-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-09-26","commitResults":[{"hash":"868536f0f3a7346130db948742729a25c51d9ea2","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":12}}},{"hash":"72348f1f29ece159830c69fe498dadfa5f7d45d4","isMergeCommit":false,"messageTitle":"Fix bugs in use cases in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}}]},{"date":"2024-09-27","commitResults":[{"hash":"4c4894f60e306ede0e18b7313828de265e5c1e7e","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Soumyadip-cmd/add-use-cases","messageBody":"Add Use cases","fileTypesAndContributionMap":{}},{"hash":"ed02c3d1bd48daab207816492e74ce86b95e4e40","isMergeCommit":true,"messageTitle":"Merge pull request #45 from teamotitan/update-developer-guide-glossary","messageBody":"Updated developer guide glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"a3b0a4fb9514ddfb8c83fc44d78164f7c9379207","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Feng1231/add-subject-attribute","messageBody":"Add Subject class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"23b0a6fe49bcec1960dcf7d0b5662081ae3c754b","isMergeCommit":false,"messageTitle":"Update add and edit command to include subject","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":21},"test-code":{"insertions":148,"deletions":39}}}]},{"date":"2024-10-10","commitResults":[{"hash":"28b8567360540e846aa348e8058764de172d53f1","isMergeCommit":true,"messageTitle":"merge master to update-add-and-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8008f72c96d2d01fe354ce88c67bab875f6d35d0","isMergeCommit":false,"messageTitle":"Fix bugs in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":4}}},{"hash":"75b821222c4828e633a14a96d7e08e903bac5634","isMergeCommit":false,"messageTitle":"Update editCommandParser with subject","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"test-code":{"insertions":3,"deletions":2}}},{"hash":"789de2ec0426021ef3f7caa06059c2700234e05b","isMergeCommit":false,"messageTitle":"Update format for subject constraints message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"23a4ee9db69248cd5d2f0d8fd5a2c556846a5144","isMergeCommit":false,"messageTitle":"Fix bugs in tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":33,"deletions":9}}},{"hash":"4de85e919df817dcbf991db00609c742c313f457","isMergeCommit":false,"messageTitle":"Fix bug in JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1d2de3a3132466eb1553e0c8b37f09c99bf26621","isMergeCommit":true,"messageTitle":"Merge pull request #76 from Soumyadip-cmd/update-add-and-edit-command","messageBody":"Update add and edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"2308ff61cfa7b848e9b6abd543e56cc7405d76cc","isMergeCommit":true,"messageTitle":"Merge pull request #80 from TY1Fan/update-number","messageBody":"Update phone number constraint","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"be81eef67d1f537eeec73afcd6418ed4768e4960","isMergeCommit":true,"messageTitle":"Merge pull request #93 from TY1Fan/update-prefix","messageBody":"Updated prefixes","fileTypesAndContributionMap":{}},{"hash":"67480f1a444d3e29edbca9df8bb0ee1fa12eafdd","isMergeCommit":true,"messageTitle":"Merge pull request #88 from Feng1231/more-tests","messageBody":"Add test coverage to person package","fileTypesAndContributionMap":{}}]}],"DennieDan":[{"date":"2024-09-20","commitResults":[{"hash":"941d6b32a084ff0c52c41098edb3d265e97e310c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DennieDan/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1513368996dbbbe41b57e4ec74317507f24fc803","isMergeCommit":false,"messageTitle":"Change AboutUs info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"25f31d3acaa15297bea9f3fd91034568598ef8c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DennieDan/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-23","commitResults":[{"hash":"d156386b77c90d25dc586af755f484280eea3c2d","isMergeCommit":false,"messageTitle":"Add 10 NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}},{"hash":"168db4c3ed6e20492a2ebcb17763d404745127a7","isMergeCommit":false,"messageTitle":"Change Github repo URL","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ca85eb240d60050772e2e409cd4d833a483be314","isMergeCommit":false,"messageTitle":"Delete Tutorials embedded links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}},{"hash":"0069e6ee3e6d08450d5393ad39ee8f79ad499058","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-24","commitResults":[{"hash":"b06ab346edf2761453d96b0a7f2209d919f1c2d1","isMergeCommit":false,"messageTitle":"Sort NFRs into types","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":10}}},{"hash":"baf6c2a22054c641204e077e9539fae14670639d","isMergeCommit":false,"messageTitle":"Fix minor ambiguity","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"d023b0bd55e33a95684d5a4f8ceb03c4fc7fa9de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5ef43328dbde0e3ded23ecbe7586ef5d3fed2ee6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14ba8f9950bee10408ec433358e287539ee6a9bb","isMergeCommit":true,"messageTitle":"Merge pull request #41 from DennieDan/branch-update-site-wide-settings","messageBody":"Update site-wide settings of project website","fileTypesAndContributionMap":{}},{"hash":"7c264f8473539f61e143bdb59ede294297df94bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f23d72369ae598ee92d15296112b922185bd6799","isMergeCommit":false,"messageTitle":"Fix a typo mistake","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aab2cd3424858125130de647cba9b246b2780968","isMergeCommit":true,"messageTitle":"Merge pull request #36 from DennieDan/branch-DG-NFRs","messageBody":"Add NFR to DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"65f7b800435ae67aa91753ef7057b84b6cb084d1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"046be163608ebacf3b216e6cccc4ae3e7f771496","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"46190cff71b741fde435acd5fae4864295a501ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d1c00f3640d85c91a264f5553f7eca181818a190","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7786dd2c8c6c6df630d72b5a43a87195d2f62bdb","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Feng1231/add-fee-attribute","messageBody":"Add fee class","fileTypesAndContributionMap":{}},{"hash":"15f02ee698c92c82bdbf789671219c5227e00a60","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Feng1231/add-time-attribute","messageBody":"Add Schedule class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"545597bfbd37aa490c6d262bbfae315b987c52e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d57bdc9f135e397e6aa7ca45564283c146195e8f","isMergeCommit":true,"messageTitle":"Merge pull request #64 from TY1Fan/add-schedule-feature","messageBody":"Add support for schedule for add and edit command","fileTypesAndContributionMap":{}},{"hash":"324602488b35fb11590bd9ac4888c2545fdb6bb8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5c26efd6b8528507897f05e955624334808fe7a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"b7d3b7ca5c6cdbbcf20996fa534e7b80712c024c","isMergeCommit":false,"messageTitle":"Update add and edit command with /fee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":30},"test-code":{"insertions":101,"deletions":37}}},{"hash":"8374eef2f5a53a0e6630e3b6823b126b7e16f59e","isMergeCommit":false,"messageTitle":"Fix import coding style in AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"b07c680093c5430fa334b50cfcacb17eb7343594","isMergeCommit":false,"messageTitle":"Fix checkstyle bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":12}}},{"hash":"c9ece7f3f4274ce4dc3fa9b903962f4074aa3616","isMergeCommit":false,"messageTitle":"Fix coding style bug for CI MacOS","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":52,"deletions":40}}},{"hash":"fc559b6691df3ffdc6b5befadc92b541f7b5cd3d","isMergeCommit":false,"messageTitle":"Modify Test Cases","messageBody":"Now can pass all the previous test cases\n\nTest cases for new methods haven\u0027t been added\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":60,"deletions":35}}},{"hash":"32b30a587ade86c91ec3b8ee41ba997b87030a24","isMergeCommit":false,"messageTitle":"Fix checkStyle bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":15,"deletions":9}}}]},{"date":"2024-10-12","commitResults":[{"hash":"addf1961b3f425ecfd767a42420093f774c3b10b","isMergeCommit":false,"messageTitle":"Update default constructor for Fee and Paid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"a18546567d8538cced125b1b162861f89a8883e1","isMergeCommit":false,"messageTitle":"Update add and edit command with paid","messageBody":"Tests haven\u0027t been updated\n","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":35},"test-code":{"insertions":83,"deletions":31}}},{"hash":"b54ace4187b817ee4dc210e1716fe45f144f19c6","isMergeCommit":false,"messageTitle":"Update all tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3},"test-code":{"insertions":37,"deletions":9}}},{"hash":"9b296a5a07fcb6eeed42e6fa0a62d9ac56713416","isMergeCommit":false,"messageTitle":"Fix checkstyle coding style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":15},"test-code":{"insertions":29,"deletions":23}}},{"hash":"d900a61a0f6e59e3cdb35dc068b1e731ad9e6bf4","isMergeCommit":false,"messageTitle":"Delete whitespaces","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"b65beea36586694a6faa4002b469703772711fd7","isMergeCommit":false,"messageTitle":"Remove default constructor of Fee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}},{"hash":"3b61d294267f91a44527d9826c668911362f0d62","isMergeCommit":false,"messageTitle":"Rename Owed to OwedAmount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":43},"test-code":{"insertions":87,"deletions":87}}},{"hash":"21c418ec44920cbcde453c22b3eced1458fe28cd","isMergeCommit":false,"messageTitle":"Update add and edit command with OwedAmount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":29},"test-code":{"insertions":80,"deletions":18}}},{"hash":"a6598a343850e244c99129d80706ac8648ae6b8c","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":108,"deletions":37}}},{"hash":"e2316c87bb74a48bb8afdae2d7b062c280d36241","isMergeCommit":false,"messageTitle":"Fix coding style bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":7},"test-code":{"insertions":21,"deletions":21}}}]},{"date":"2024-10-13","commitResults":[{"hash":"3cc1ec8f6cb9ec0c70eb113504cf4a4b72a3a63f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-detect-duplicate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cc76893a1e3bbdaa2ca1c6234cdc0d96a96213ce","isMergeCommit":false,"messageTitle":"Update same phone to be considered as same person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":11,"deletions":3}}},{"hash":"2e1350ecfc8912515eeb128d0cc4fd4cee99f4d9","isMergeCommit":false,"messageTitle":"Fix indentification","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"2385c6213947dc7e44be3b7b054b479268ed7d82","isMergeCommit":true,"messageTitle":"Merge pull request #84 from DennieDan/branch-detect-duplicate","messageBody":"Update Duplicate Detection to include Name and Phone","fileTypesAndContributionMap":{}},{"hash":"2e80642340729befac34a535f04d0fdf91f339aa","isMergeCommit":true,"messageTitle":"Fix merge comflicts with master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40be6250abde09b6f8c4e1d2c9e7298a9c616e7c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from DennieDan/branch-add-optional-owed","messageBody":"Update Add and Edit command with OwedAmount","fileTypesAndContributionMap":{}},{"hash":"b2d8111bafbc0609e94fbe28a8165a2307fb2696","isMergeCommit":true,"messageTitle":"Resolve merge conflicts to pass all tests","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa98668b20f06e174c59eda3ecef7cc07cde602c","isMergeCommit":false,"messageTitle":"Fix checkstyle bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":10,"deletions":7}}},{"hash":"384203c95b77e4917b8d30f0d727e676fca3e4ba","isMergeCommit":true,"messageTitle":"Merge pull request #81 from DennieDan/branch-add-optional-paid","messageBody":"Update add and edit command with Paid","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Feng1231":{"docs":37,"functional-code":401,"test-code":625},"TY1Fan":{"docs":14,"functional-code":73,"test-code":107},"teamotitan":{"docs":10,"functional-code":33,"test-code":0},"Soumyadip-cmd":{"docs":75,"functional-code":88,"test-code":149},"DennieDan":{"docs":39,"functional-code":287,"test-code":463}},"authorContributionVariance":{"Feng1231":114614.06,"TY1Fan":5457.542,"teamotitan":186.37762,"Soumyadip-cmd":4031.0498,"DennieDan":56068.43},"authorDisplayNameMap":{"Feng1231":"CS2103T-F14a-1 CHEN..FENG","TY1Fan":"CS2103T-F14a-1 TOH .. FAN","teamotitan":"CS2103T-F14a-1 TIMO.. TAN","Soumyadip-cmd":"CS2103T-F14a-1 SOUM..SAHA","DennieDan":"CS2103T-F14a-1 DINH.. DAN"}} +{"authorDailyContributionsMap":{"Feng1231":[{"date":"2024-09-20","commitResults":[{"hash":"816e32fd48b189cdc4d5874f830dbd9153db5ba8","isMergeCommit":false,"messageTitle":"Test commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"31c54687863b69a2d3e6710a398951a12b9aa83f","isMergeCommit":true,"messageTitle":"Merge pull request #8 from Feng1231/add-chenFeng-info","messageBody":"Add Chen Feng photo","fileTypesAndContributionMap":{}},{"hash":"62a2c84e90e34938ca5ebcdf75fb0955fc0866a6","isMergeCommit":true,"messageTitle":"Merge pull request #9 from DennieDan/add-dan-photo","messageBody":"Add Dan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"5e7bef32aff7b64ad32c15a773b275ead96aaf21","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}},{"hash":"29b08c02e221e6a9b35aac2277c095a940dc00be","isMergeCommit":true,"messageTitle":"Merge pull request #18 from TY1Fan/add-yifan-aboutus","messageBody":"Add Yi Fan\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"2308a497fd99c39d8562021caea1ae3ffc306832","isMergeCommit":true,"messageTitle":"Merge pull request #20 from DennieDan/add-dan-aboutus","messageBody":"Add Dan\u0027s AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-09-23","commitResults":[{"hash":"f903f8653a9233eb92e25c66fdeeaaab35b4ed0d","isMergeCommit":false,"messageTitle":"README.md: Update content to match project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":8}}},{"hash":"896bcc9f85d0b496fa0279893d868b1822ca0d28","isMergeCommit":false,"messageTitle":"Update DG Target user profile, value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}},{"hash":"0186330c345b2f30e0b65ac334420c6ada513dc6","isMergeCommit":false,"messageTitle":"Update DG Target user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"c3e02af06ba655783a1d2c870f3a7bbf76062981","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-24","commitResults":[{"hash":"655d3d1221cb35db2550220e4895c835a96c88a4","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Feng1231/update-readme-docs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"623506dc2acdb20615556df01c484c1629b8a8df","isMergeCommit":true,"messageTitle":"Merge pull request #50 from TY1Fan/branch-update-readme","messageBody":"Update UI mockup","fileTypesAndContributionMap":{}},{"hash":"b3c27a0a06118531083c95f555ea518e52ff216d","isMergeCommit":false,"messageTitle":"Add Subject class","messageBody":"Person class requires a Subject attribute to be added to it.\nSubject needs to be a defined set of values.\n\nLets:\n- Add a Subject class to represent the Subject attribute\n- Add a Subjects enum to define the set of values for Subject\n- Add a Subject test class to test the Subject class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":0},"test-code":{"insertions":58,"deletions":0}}},{"hash":"5994c42af8fc1db16e7f4ee1a0def965587c65b6","isMergeCommit":false,"messageTitle":"Add hashCodeTest for SubjectTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"fa36287e2918e773e710acdf981fff2d5cec49b6","isMergeCommit":false,"messageTitle":"Add Days enum and Schedule class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":0}}},{"hash":"2dba611a9523683ec0196d074070ba041f4304af","isMergeCommit":false,"messageTitle":"Add Test class for Days","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"6a3de3e3d8764285b569bbb5dc28ba143a96fc4e","isMergeCommit":false,"messageTitle":"Schedule.java: Disallow 2400 for time","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"f5f0b7e155eda2df2e71c894c8a2142920e31936","isMergeCommit":false,"messageTitle":"Schedule.java: Override toString, equals and hashCode","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"1edd624fd9aa99dd71252c0f388a4be76e6759d7","isMergeCommit":false,"messageTitle":"Schedule.java: update getDayComponent method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d9de431052d8620d8242d37c68f620c25477e7be","isMergeCommit":false,"messageTitle":"Add test class for Schedule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":146,"deletions":0}}},{"hash":"bec77ac7f83bafee114ee7d99e70b3180914c053","isMergeCommit":false,"messageTitle":"Schedule.java: Update hashCode to use Objects::hash","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"8e50e204cd8d7da656fdc43183cf8bcb15820b71","isMergeCommit":false,"messageTitle":"Add Fee class and Test class for Fee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0},"test-code":{"insertions":89,"deletions":0}}},{"hash":"ff605ebfde01eb62f3cddbfbf3148e513d0ca5b5","isMergeCommit":false,"messageTitle":"Import assertThrows from own package instead of junit","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"82f7f81e6849858e079e8cb8e8fb67cd5fc9c404","isMergeCommit":false,"messageTitle":"Import assertThrows from own package instead of junit","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"88838349a9aa492a31df692c7dc4fd0bdb31bb69","isMergeCommit":false,"messageTitle":"Add subclass of Fee","messageBody":"Fee represents a double amount with at most\n2 decimal places\nPerson class requires Rate, Owed, Paid\nattribute to be added to it. Each of them\nis a double amount with at most 2 decimal\nplaces.\n\nLets:\n- Add a Fee class\n- Add Owed, Paid, Rate classes which are\nsubclasses of Fee\n","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":3}}},{"hash":"b03fbe2d859d58f2319418eff4edf2ded217a000","isMergeCommit":false,"messageTitle":"Add test classes for Owed, Paid, Rate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":225,"deletions":4}}},{"hash":"f01b16907f30a25b149a0387f11f0e4a5dbe0e28","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into add-fee-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a2d774633d98e55a0ca7231bde137aa9e74869e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into add-subject-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1e18aaf67c3e41fd1532600a939ba35ebc406bff","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into add-time-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9de42f13a18e1a3df73cb96bbd8c423006afb062","isMergeCommit":false,"messageTitle":"Update test classes for Owed, Paid, Rate","messageBody":"Add in hashcode testings for Owed, Paid, Rate classes\nRefactor some test cases to use common variables\nInstead of magic literals\n\nThis improves test coverage and readability\n","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":6}}},{"hash":"623cf9fb9c2f6890f8f2019105e43fe8fcdc4e5f","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-fee-attribute\u0027 of https://github.com/Feng1231/tp into add-fee-attribute","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e45d723b226029d2bb1b14d4502a8b09d0fce983","isMergeCommit":false,"messageTitle":"Remove tag attribute and related code","messageBody":"Tag attribute is not needed for our project.\n\nLets:\n- Remove tag class\n- Remove constants defined for tag class\n- Remove tag Cli syntax\n- Remove tag related methods\n- Remove tag attribute in Person class and sample data\n- Remove utils for tag\n- Remove tag related tests in all classes\n\nCode that could be reused in the future is commented out.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":278},"test-code":{"insertions":54,"deletions":270}}}]},{"date":"2024-10-04","commitResults":[{"hash":"118d12a21359da84602df97204f880e461f0ad43","isMergeCommit":false,"messageTitle":"Update Fee class to be abstract","messageBody":"Fee class is instantiable.\n\nPreventing instantiation of Fee class improves the principle\nof abstraction.\n\nTo prevent instantiation of Fee class, lets:\n- Change Fee class to abstract class\n- Update FeeTest class to be able to test the abstract class\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":17,"deletions":15}}}]},{"date":"2024-10-08","commitResults":[{"hash":"5d4d70b869a6019abfbbba8bf2f587df70e7f9d5","isMergeCommit":false,"messageTitle":"Update PersonTest method to test Schedule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7d9d3598d9963bdc88e1583bff3f5af2698b9b94","isMergeCommit":true,"messageTitle":"Merge pull request #69 from teamotitan/Add-Income-Command","messageBody":"Add IncomeCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"89792e6dcc1fa92846455f230a76bfb7d0f07fdb","isMergeCommit":false,"messageTitle":"Add test coverage to person package","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":70,"deletions":8}}}]}],"TY1Fan":[{"date":"2024-09-20","commitResults":[{"hash":"e04b55ed71b0eb7a5f0b99b81187ebd03c0ba2d4","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"62a94129853bc7dfb8f35272b271c2fd57b03d65","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Feng1231/add-chenFeng-name","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-09-23","commitResults":[{"hash":"d0da763c434828bb2c9e8efd3e9ff19f002c1df4","isMergeCommit":false,"messageTitle":"Add acknowledgement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"af539ebae8dc1b740c3ada496f3611fc0c2d591a","isMergeCommit":false,"messageTitle":"Fix spaces","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"28fbd411c6371ba80bd0d20d2b99c964b430a2a9","isMergeCommit":false,"messageTitle":"Add newline at eof","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f131806fb2b380adaff4707a5c29c8a3d8c6c739","isMergeCommit":false,"messageTitle":"Update user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":9}}}]},{"date":"2024-09-24","commitResults":[{"hash":"bb7bf7eff239ec55fc99d9fd0fef852d0c3798db","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Feng1231/update-dg","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"26d23ac44fcdf310f8a4a9b1a4bb7abf2281cbaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"39304bab15842916081f10daca8f150f3965b33f","isMergeCommit":true,"messageTitle":"Merge pull request #40 from TY1Fan/branch-update-readme","messageBody":"Update Readme.md","fileTypesAndContributionMap":{}},{"hash":"156ad6345e5fd25df00ef71241c7b7c434ce4db9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from TY1Fan/branch-update-DG","messageBody":"Update user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-09-25","commitResults":[{"hash":"fe75f943500998c9176bbc204f7565ba2bb5e844","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix a typo mistake\n Fix minor ambiguity\n Sort NFRs into types\n Update README.md\n Update user stories\n Delete Tutorials embedded links\n Change Github repo URL\n Add newline at eof\n Fix spaces\n Add acknowledgement\n Update ui\n Add 10 NFRs\n Update DG Target user stories\n Update DG Target user profile, value proposition\n README.md: Update content to match project\n Update README.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-09-26","commitResults":[{"hash":"9cb12ceee2348572f2bbb7a0ea3047921e17807b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp into branch-update-readme","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix a typo mistake\n Fix minor ambiguity\n Sort NFRs into types\n Update README.md\n Update user stories\n Delete Tutorials embedded links\n Change Github repo URL\n Add 10 NFRs\n Update DG Target user stories\n Update DG Target user profile, value proposition\n README.md: Update content to match project\n Update README.md\n","fileTypesAndContributionMap":{}},{"hash":"ea1eed3f9cbd309422d872c5197a49724fd02143","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"a6f75e8df0bc30291dde6a6637d94e651ef92c06","isMergeCommit":true,"messageTitle":"Merge pull request #49 from TY1Fan/branch-update-readme","messageBody":"Fix bug with duplicate header for acknowledgement","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"44e69642227248a03df542c4e20cdfe25c2695c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix bugs in use cases in DG\n Fix bugs\n Add use cases\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"62e3a44e259cc8a6b0b94cbb456fbe8c1ea87153","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Feng1231/delete-tag-attribute","messageBody":"Delete tag attribute and related code","fileTypesAndContributionMap":{}},{"hash":"6ec843a9f88075748f7db9c2d83cc4e799896cae","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8d03b3712e6db8f49139d77d01d425bd3bcf0a48","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Update Fee class to be abstract\n Remove tag attribute and related code\n Update test classes for Owed, Paid, Rate\n Add test classes for Owed, Paid, Rate\n Add subclass of Fee\n Import assertThrows from own package instead of junit\n Import assertThrows from own package instead of junit\n Add Fee class and Test class for Fee\n Schedule.java: Update hashCode to use Objects::hash\n Add test class for Schedule\n Schedule.java: update getDayComponent method\n Schedule.java: Override toString, equals and hashCode\n Schedule.java: Disallow 2400 for time\n Add Test class for Days\n Add Days enum and Schedule class\n Add hashCodeTest for SubjectTest\n Add Subject class\n Update UI mockup\n Edit Glossary\n Edited the glossary of the developer guide to include more terms\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"ad8b6d93c123c194847cf2a76b37e13db8800f90","isMergeCommit":false,"messageTitle":"Add support for schedule","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":24},"test-code":{"insertions":25,"deletions":8}}},{"hash":"0d112382605eea49fd928e70f5fafdb1eea9100e","isMergeCommit":false,"messageTitle":"Fix style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":8}}},{"hash":"98cc09bb02f1bb534ac7e02c487f5355798e717a","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":12}}},{"hash":"26ed22ec8948cb7f01bc2c39dc7bfb17fb54f776","isMergeCommit":false,"messageTitle":"Fix test style issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":78,"deletions":33}}},{"hash":"f7df87f30b5ada29a7ac4950320041070aca9565","isMergeCommit":false,"messageTitle":"Fix failing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2},"test-code":{"insertions":17,"deletions":11}}}]},{"date":"2024-10-08","commitResults":[{"hash":"0016b3beb1f5d6d203c99a495aea8c427110081d","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Feng1231/update-person-test-for-schedule","messageBody":"Update PersonTest method to test Schedule","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"f143f2b4ddb9be140aa5591c74ec2444cf77ca21","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Update PersonTest method to test Schedule\n Fix failing test cases\n Fix test style issue\n Update test files\n Fix style issue\n Add support for schedule\n","fileTypesAndContributionMap":{}},{"hash":"cfb07c85432620feb88066bdb71905e1256a2f56","isMergeCommit":true,"messageTitle":"Merge pull request #75 from DennieDan/branch-add-fee","messageBody":"Update add and edit command with /fee","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"e8bd90481217bca07e9dcacad3f0e9a85e3fddd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d3b093b34fb6a4668500ec409d4a46e38c3e79eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix bug in JsonAdaptedPersonTest\n Fix bugs in tests\n Update format for subject constraints message\n Update editCommandParser with subject\n Fix bugs in LogicManagerTest\n Update add and edit command to include subject\n Fix checkStyle bugs\n Modify Test Cases\n Fix coding style bug for CI MacOS\n Fix checkstyle bug\n Fix import coding style in AddCommandParser.java\n Update add and edit command with /fee\n Fixed checkstyle error\n Deleted some imports and indentations\n Add IncomeCommand\n","fileTypesAndContributionMap":{}},{"hash":"d0edd3de242ffd543149a3c48fc65bd50786db82","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp into update-number","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix bug in JsonAdaptedPersonTest\n Fix bugs in tests\n Update format for subject constraints message\n Update editCommandParser with subject\n Fix bugs in LogicManagerTest\n Update add and edit command to include subject\n Fix checkStyle bugs\n Modify Test Cases\n Fix coding style bug for CI MacOS\n Fix checkstyle bug\n Fix import coding style in AddCommandParser.java\n Update add and edit command with /fee\n Fixed checkstyle error\n Deleted some imports and indentations\n Add IncomeCommand\n","fileTypesAndContributionMap":{}},{"hash":"8c97d910c782de57c3da70c2493cfb04500ccfd2","isMergeCommit":false,"messageTitle":"Update phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":5,"deletions":2}}},{"hash":"be2ffcfe63d3787024d364f5e3ddf4386e944ec1","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"68b7078f9709ed940ac6a8931151150556ecf508","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-number\u0027 of https://github.com/TY1Fan/tp into update-prefix","messageBody":"* \u0027update-number\u0027 of https://github.com/TY1Fan/tp:\n Fix test cases\n Update phone\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"b0e1ea6a0d413e20dab19862f043f060ae7fb34a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix test cases\n Update phone\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"e0b652b3930afeafccd01fb2d1357426a5b8ad67","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-F14a-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03887044ed1b24be9ec5a6d485d320a190446a78","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix checkstyle bugs\n Fix indentification\n Update same phone to be considered as same person\n Fix coding style bug\n Update test cases\n Update add and edit command with OwedAmount\n Rename Owed to OwedAmount\n Remove default constructor of Fee\n Delete whitespaces\n Fix checkstyle coding style\n Update all tests\n Update add and edit command with paid\n Update default constructor for Fee and Paid\n","fileTypesAndContributionMap":{}},{"hash":"cf94b14eb099e453b865cc59c0d2d5d822f5e795","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp into update-prefix","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Fix checkstyle bugs\n Fix indentification\n Update same phone to be considered as same person\n Fix coding style bug\n Update test cases\n Update add and edit command with OwedAmount\n Rename Owed to OwedAmount\n Remove default constructor of Fee\n Delete whitespaces\n Fix checkstyle coding style\n Update all tests\n Update add and edit command with paid\n Update default constructor for Fee and Paid\n","fileTypesAndContributionMap":{}},{"hash":"03bd946879ba4e04e3e5edb91a0f20e1fbfaf744","isMergeCommit":false,"messageTitle":"Update prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-15","commitResults":[{"hash":"f7f68c93734ed38914e616b89bccb6cacbce4d41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/TY1Fan/tp","messageBody":"* \u0027master\u0027 of https://github.com/TY1Fan/tp:\n Update prefixes\n Add test coverage to person package\n","fileTypesAndContributionMap":{}},{"hash":"05dcc862d424c0eb8ff2788748b253aa2793f342","isMergeCommit":false,"messageTitle":"Update name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1},"test-code":{"insertions":3,"deletions":5}}},{"hash":"11af8254ca4deb975c373519159c8dc593458f86","isMergeCommit":false,"messageTitle":"Update comments","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}},{"hash":"68720df5c66f5a6557fb55dd22227fa588e00ce7","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"3be11b81efd33bb9ee1956153829e337574d29db","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1}}}]}],"teamotitan":[{"date":"2024-09-20","commitResults":[{"hash":"9a5b6942bcd4dc61e6f2bc15f8d88c49484ff355","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"413934ed17ca37253fda8d158ff651eed74161a9","isMergeCommit":true,"messageTitle":"Merge pull request #11 from teamotitan/add-Timothy-photo","messageBody":"Add Timothy\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"469c9986f927a1f3dc7435a2cad3a6575e6d7252","isMergeCommit":false,"messageTitle":"Updated AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"36025fb165be1fd4cf694887cc5c9fa68893f75e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-Timothy-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"16b53a8bdec4b8ae20ec61d832186d6c80acfafe","isMergeCommit":true,"messageTitle":"Merge pull request #21 from teamotitan/add-Timothy-AboutUs","messageBody":"Add Timothy\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"d920d5ed1e58b04de102b91c7fa72f2f3907154a","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-26","commitResults":[{"hash":"eb41f8c6d4c665dc219cea051ed7dc9e2b09a5ea","isMergeCommit":false,"messageTitle":"Edited the glossary of the developer guide to include more terms","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-09-27","commitResults":[{"hash":"a4f3027c5d5091a2937e94133fd1ef79161a6c76","isMergeCommit":false,"messageTitle":"Edit Glossary","messageBody":"Made some minor fixes where I capitalize some letters\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-06","commitResults":[{"hash":"768ee360dad557231bb664901b69637a84db4080","isMergeCommit":false,"messageTitle":"Add IncomeCommand","messageBody":"currently, there is no command to show the money owed and money earned\nby the user\n\ncreated a new income command that shows the total money earned and\ntotal money owed by the user\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"8ae6aa5b36c892c67715b957347cd03d1e0208f4","isMergeCommit":false,"messageTitle":"Deleted some imports and indentations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9}}},{"hash":"bea101b642e347bc7379c53f57e11a761b10e4ff","isMergeCommit":false,"messageTitle":"Fixed checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":9}}}]}],"Soumyadip-cmd":[{"date":"2024-09-20","commitResults":[{"hash":"7a4a9ea23601b7dfdbdfdf5420550a6ba58eb336","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Soumyadip-cmd/add-Soumyadip-photo","messageBody":"Add Soumyadip\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"1886c815042c69e4cfe54b551ca956e8d37bd728","isMergeCommit":false,"messageTitle":"Add Soumyadip AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"6bd03018768ed5fb40bda46701835de17ed72d91","isMergeCommit":true,"messageTitle":"Resolve conflict in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"867042190c4eb28abda78859fd2fac678005642a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of origin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9891226d621cf2b50f3b13d1650ab4a6d9859f7","isMergeCommit":true,"messageTitle":"Merge pull request #22 from Soumyadip-cmd/add-soumyadip-aboutUs","messageBody":"Add Soumyadip AboutUs","fileTypesAndContributionMap":{}},{"hash":"d8a0f5f83ad265f1c47bcf148f5ef7d5436ff2f2","isMergeCommit":true,"messageTitle":"Merge pull request #23 from AY2425S1-CS2103T-F14a-1/teamotitan-patch-1","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-09-26","commitResults":[{"hash":"868536f0f3a7346130db948742729a25c51d9ea2","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":12}}},{"hash":"72348f1f29ece159830c69fe498dadfa5f7d45d4","isMergeCommit":false,"messageTitle":"Fix bugs in use cases in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}}]},{"date":"2024-09-27","commitResults":[{"hash":"4c4894f60e306ede0e18b7313828de265e5c1e7e","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Soumyadip-cmd/add-use-cases","messageBody":"Add Use cases","fileTypesAndContributionMap":{}},{"hash":"ed02c3d1bd48daab207816492e74ce86b95e4e40","isMergeCommit":true,"messageTitle":"Merge pull request #45 from teamotitan/update-developer-guide-glossary","messageBody":"Updated developer guide glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"a3b0a4fb9514ddfb8c83fc44d78164f7c9379207","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Feng1231/add-subject-attribute","messageBody":"Add Subject class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"23b0a6fe49bcec1960dcf7d0b5662081ae3c754b","isMergeCommit":false,"messageTitle":"Update add and edit command to include subject","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":21},"test-code":{"insertions":148,"deletions":39}}}]},{"date":"2024-10-10","commitResults":[{"hash":"28b8567360540e846aa348e8058764de172d53f1","isMergeCommit":true,"messageTitle":"merge master to update-add-and-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8008f72c96d2d01fe354ce88c67bab875f6d35d0","isMergeCommit":false,"messageTitle":"Fix bugs in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":4}}},{"hash":"75b821222c4828e633a14a96d7e08e903bac5634","isMergeCommit":false,"messageTitle":"Update editCommandParser with subject","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"test-code":{"insertions":3,"deletions":2}}},{"hash":"789de2ec0426021ef3f7caa06059c2700234e05b","isMergeCommit":false,"messageTitle":"Update format for subject constraints message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"23a4ee9db69248cd5d2f0d8fd5a2c556846a5144","isMergeCommit":false,"messageTitle":"Fix bugs in tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":33,"deletions":9}}},{"hash":"4de85e919df817dcbf991db00609c742c313f457","isMergeCommit":false,"messageTitle":"Fix bug in JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1d2de3a3132466eb1553e0c8b37f09c99bf26621","isMergeCommit":true,"messageTitle":"Merge pull request #76 from Soumyadip-cmd/update-add-and-edit-command","messageBody":"Update add and edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"2308ff61cfa7b848e9b6abd543e56cc7405d76cc","isMergeCommit":true,"messageTitle":"Merge pull request #80 from TY1Fan/update-number","messageBody":"Update phone number constraint","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"be81eef67d1f537eeec73afcd6418ed4768e4960","isMergeCommit":true,"messageTitle":"Merge pull request #93 from TY1Fan/update-prefix","messageBody":"Updated prefixes","fileTypesAndContributionMap":{}},{"hash":"67480f1a444d3e29edbca9df8bb0ee1fa12eafdd","isMergeCommit":true,"messageTitle":"Merge pull request #88 from Feng1231/more-tests","messageBody":"Add test coverage to person package","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"404cfca61a4075e2a81a6e7f79285e16f78e14c2","isMergeCommit":true,"messageTitle":"Merge pull request #97 from TY1Fan/update-name","messageBody":"Update name","fileTypesAndContributionMap":{}}]}],"DennieDan":[{"date":"2024-09-20","commitResults":[{"hash":"941d6b32a084ff0c52c41098edb3d265e97e310c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DennieDan/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1513368996dbbbe41b57e4ec74317507f24fc803","isMergeCommit":false,"messageTitle":"Change AboutUs info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"25f31d3acaa15297bea9f3fd91034568598ef8c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DennieDan/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-23","commitResults":[{"hash":"d156386b77c90d25dc586af755f484280eea3c2d","isMergeCommit":false,"messageTitle":"Add 10 NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}},{"hash":"168db4c3ed6e20492a2ebcb17763d404745127a7","isMergeCommit":false,"messageTitle":"Change Github repo URL","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ca85eb240d60050772e2e409cd4d833a483be314","isMergeCommit":false,"messageTitle":"Delete Tutorials embedded links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}},{"hash":"0069e6ee3e6d08450d5393ad39ee8f79ad499058","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-24","commitResults":[{"hash":"b06ab346edf2761453d96b0a7f2209d919f1c2d1","isMergeCommit":false,"messageTitle":"Sort NFRs into types","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":10}}},{"hash":"baf6c2a22054c641204e077e9539fae14670639d","isMergeCommit":false,"messageTitle":"Fix minor ambiguity","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"d023b0bd55e33a95684d5a4f8ceb03c4fc7fa9de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5ef43328dbde0e3ded23ecbe7586ef5d3fed2ee6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14ba8f9950bee10408ec433358e287539ee6a9bb","isMergeCommit":true,"messageTitle":"Merge pull request #41 from DennieDan/branch-update-site-wide-settings","messageBody":"Update site-wide settings of project website","fileTypesAndContributionMap":{}},{"hash":"7c264f8473539f61e143bdb59ede294297df94bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f23d72369ae598ee92d15296112b922185bd6799","isMergeCommit":false,"messageTitle":"Fix a typo mistake","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aab2cd3424858125130de647cba9b246b2780968","isMergeCommit":true,"messageTitle":"Merge pull request #36 from DennieDan/branch-DG-NFRs","messageBody":"Add NFR to DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"65f7b800435ae67aa91753ef7057b84b6cb084d1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"046be163608ebacf3b216e6cccc4ae3e7f771496","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"46190cff71b741fde435acd5fae4864295a501ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d1c00f3640d85c91a264f5553f7eca181818a190","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7786dd2c8c6c6df630d72b5a43a87195d2f62bdb","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Feng1231/add-fee-attribute","messageBody":"Add fee class","fileTypesAndContributionMap":{}},{"hash":"15f02ee698c92c82bdbf789671219c5227e00a60","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Feng1231/add-time-attribute","messageBody":"Add Schedule class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"545597bfbd37aa490c6d262bbfae315b987c52e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d57bdc9f135e397e6aa7ca45564283c146195e8f","isMergeCommit":true,"messageTitle":"Merge pull request #64 from TY1Fan/add-schedule-feature","messageBody":"Add support for schedule for add and edit command","fileTypesAndContributionMap":{}},{"hash":"324602488b35fb11590bd9ac4888c2545fdb6bb8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5c26efd6b8528507897f05e955624334808fe7a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F14a-1/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"b7d3b7ca5c6cdbbcf20996fa534e7b80712c024c","isMergeCommit":false,"messageTitle":"Update add and edit command with /fee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":30},"test-code":{"insertions":101,"deletions":37}}},{"hash":"8374eef2f5a53a0e6630e3b6823b126b7e16f59e","isMergeCommit":false,"messageTitle":"Fix import coding style in AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"b07c680093c5430fa334b50cfcacb17eb7343594","isMergeCommit":false,"messageTitle":"Fix checkstyle bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":12}}},{"hash":"c9ece7f3f4274ce4dc3fa9b903962f4074aa3616","isMergeCommit":false,"messageTitle":"Fix coding style bug for CI MacOS","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":52,"deletions":40}}},{"hash":"fc559b6691df3ffdc6b5befadc92b541f7b5cd3d","isMergeCommit":false,"messageTitle":"Modify Test Cases","messageBody":"Now can pass all the previous test cases\n\nTest cases for new methods haven\u0027t been added\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":60,"deletions":35}}},{"hash":"32b30a587ade86c91ec3b8ee41ba997b87030a24","isMergeCommit":false,"messageTitle":"Fix checkStyle bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":15,"deletions":9}}}]},{"date":"2024-10-12","commitResults":[{"hash":"addf1961b3f425ecfd767a42420093f774c3b10b","isMergeCommit":false,"messageTitle":"Update default constructor for Fee and Paid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"a18546567d8538cced125b1b162861f89a8883e1","isMergeCommit":false,"messageTitle":"Update add and edit command with paid","messageBody":"Tests haven\u0027t been updated\n","fileTypesAndContributionMap":{"functional-code":{"insertions":110,"deletions":35},"test-code":{"insertions":83,"deletions":31}}},{"hash":"b54ace4187b817ee4dc210e1716fe45f144f19c6","isMergeCommit":false,"messageTitle":"Update all tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3},"test-code":{"insertions":37,"deletions":9}}},{"hash":"9b296a5a07fcb6eeed42e6fa0a62d9ac56713416","isMergeCommit":false,"messageTitle":"Fix checkstyle coding style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":15},"test-code":{"insertions":29,"deletions":23}}},{"hash":"d900a61a0f6e59e3cdb35dc068b1e731ad9e6bf4","isMergeCommit":false,"messageTitle":"Delete whitespaces","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"b65beea36586694a6faa4002b469703772711fd7","isMergeCommit":false,"messageTitle":"Remove default constructor of Fee","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}},{"hash":"3b61d294267f91a44527d9826c668911362f0d62","isMergeCommit":false,"messageTitle":"Rename Owed to OwedAmount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":43},"test-code":{"insertions":87,"deletions":87}}},{"hash":"21c418ec44920cbcde453c22b3eced1458fe28cd","isMergeCommit":false,"messageTitle":"Update add and edit command with OwedAmount","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":29},"test-code":{"insertions":80,"deletions":18}}},{"hash":"a6598a343850e244c99129d80706ac8648ae6b8c","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":108,"deletions":37}}},{"hash":"e2316c87bb74a48bb8afdae2d7b062c280d36241","isMergeCommit":false,"messageTitle":"Fix coding style bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":7},"test-code":{"insertions":21,"deletions":21}}}]},{"date":"2024-10-13","commitResults":[{"hash":"3cc1ec8f6cb9ec0c70eb113504cf4a4b72a3a63f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-detect-duplicate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cc76893a1e3bbdaa2ca1c6234cdc0d96a96213ce","isMergeCommit":false,"messageTitle":"Update same phone to be considered as same person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":11,"deletions":3}}},{"hash":"2e1350ecfc8912515eeb128d0cc4fd4cee99f4d9","isMergeCommit":false,"messageTitle":"Fix indentification","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"2385c6213947dc7e44be3b7b054b479268ed7d82","isMergeCommit":true,"messageTitle":"Merge pull request #84 from DennieDan/branch-detect-duplicate","messageBody":"Update Duplicate Detection to include Name and Phone","fileTypesAndContributionMap":{}},{"hash":"2e80642340729befac34a535f04d0fdf91f339aa","isMergeCommit":true,"messageTitle":"Fix merge comflicts with master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40be6250abde09b6f8c4e1d2c9e7298a9c616e7c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from DennieDan/branch-add-optional-owed","messageBody":"Update Add and Edit command with OwedAmount","fileTypesAndContributionMap":{}},{"hash":"b2d8111bafbc0609e94fbe28a8165a2307fb2696","isMergeCommit":true,"messageTitle":"Resolve merge conflicts to pass all tests","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa98668b20f06e174c59eda3ecef7cc07cde602c","isMergeCommit":false,"messageTitle":"Fix checkstyle bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":10,"deletions":7}}},{"hash":"384203c95b77e4917b8d30f0d727e676fca3e4ba","isMergeCommit":true,"messageTitle":"Merge pull request #81 from DennieDan/branch-add-optional-paid","messageBody":"Update add and edit command with Paid","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Feng1231":{"docs":37,"functional-code":401,"test-code":625},"TY1Fan":{"docs":14,"functional-code":109,"test-code":112},"teamotitan":{"docs":10,"functional-code":33,"test-code":0},"Soumyadip-cmd":{"docs":75,"functional-code":88,"test-code":149},"DennieDan":{"docs":39,"functional-code":287,"test-code":459}},"authorContributionVariance":{"Feng1231":102904.19,"TY1Fan":4955.766,"teamotitan":167.70409,"Soumyadip-cmd":3639.4314,"DennieDan":50531.445},"authorDisplayNameMap":{"Feng1231":"CS2103T-F14a-1 CHEN..FENG","TY1Fan":"CS2103T-F14a-1 TOH .. FAN","teamotitan":"CS2103T-F14a-1 TIMO.. TAN","Soumyadip-cmd":"CS2103T-F14a-1 SOUM..SAHA","DennieDan":"CS2103T-F14a-1 DINH.. DAN"}} diff --git a/AY2425S1-CS2103T-F15-1_tp_master/authorship.json b/AY2425S1-CS2103T-F15-1_tp_master/authorship.json index 7e3704af..7f6a8176 100644 --- a/AY2425S1-CS2103T-F15-1_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F15-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F15-1/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F15-1/tp/graph/badge.svg?token\u003dRD8J2QZCMC)](https://codecov.io/gh/AY2425S1-CS2103T-F15-1/tp)","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"* The product `NovaCare` targets healthcare professionals, particularly nurses, with the aim of optimizing patient care and task management. ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"* This application is designed to **improve efficiency** by providing a clear overview of patient information, critical tasks, and emergency contacts, reducing reliance on manual documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"* It is named `NovaCare`, a blend of \"new\" (Nova) and \"care\", symbolizing a fresh approach to managing patient information and tasks.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"* `NovaCare` enhances patient care by **organizing and tracking critical data**, allowing healthcare personnel to prioritize their time and focus on urgent tasks. The system provides:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":" * **Organized Patient Care**: Efficient management of patient information such as personal details, emergency contact details and priority.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":" * **Task Management**: Nurses can add, track, and complete tasks like administering medication or checking vitals, ensuring no task is overlooked.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":" * **Critical Insights**: A centralized dashboard displays patient data and task overviews, enabling quick identification of patients needing immediate attention.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"* For the detailed documentation of this project, see the **[NovaCare Product Website](https://ay2425s1-cs2103t-f15-1.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"-":4,"yixianggg":10}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"### Gavin Soh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"\u003cimg src\u003d\"images/gavinsoh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"[[github](http://github.com/gavinsoh)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":"### Jarrell Chia","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"\u003cimg src\u003d\"images/jarrellc1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":"[[github](https://github.com/jarrellc1)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"* Role: Project Advisor","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":"### Choo Yi Xiang","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":"\u003cimg src\u003d\"images/yixianggg.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":"[[github](http://github.com/yixianggg)] ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":"### Benjamin Lim","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":"\u003cimg src\u003d\"images/benjibase.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":"[[github](http://github.com/benjiBase)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":"### Chong Xin Wei","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":"\u003cimg src\u003d\"images/xinweichong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":"[[github](http://github.com/xinweichong)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"benjiBase":5,"gavinsoh":12,"xinweichong":2,"-":41,"yixianggg":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"xinweichong"},"content":"* nurse in the healthcare industry managing patients","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"xinweichong"},"content":"* has many patients across different wards with varying care levels","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"xinweichong"},"content":"* Mainly done in desktop app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"xinweichong"},"content":"* Used to typing to fill out user information","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"xinweichong"},"content":"* is comfortable using CLI","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"xinweichong"},"content":"**Value proposition**: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"xinweichong"},"content":"provides a patient management system for nurses to use which is faster than GUI/mouse driven apps","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"jarrellc1"},"content":"|----------|---------|-----------------------------------------|--------------------------------------|","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | add in emergency contact numbers | refer to them during an emergency |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | delete emergency contact numbers | remove irrelevant emergency contacts |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | update a patient’s category | reflect changes in their care status |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | assign multiple categories to a patient | quickly identify the care level |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | add tasks | track what task needs to be done |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | delete tasks | remove irrelevant tasks |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"jarrellc1"},"content":"(For all use cases below, the **System** is the `NovaCare` and the **Actor** is the `nurses`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"jarrellc1"},"content":"**Use case: UC01 - Add Task**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"jarrellc1"},"content":"1. User chooses to add a new task.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"jarrellc1"},"content":"2. NovaCare asks for a patient ID and description of the task.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"jarrellc1"},"content":"3. User inputs the requested information.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"jarrellc1"},"content":"4. NovaCare outputs message showing successful task creation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"jarrellc1"},"content":"* 3a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"jarrellc1"},"content":"* 3a. NovaCare detects an invalid patient ID.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"jarrellc1"},"content":" * 3a1. NovaCare requests for valid patient ID.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"jarrellc1"},"content":" * 3a2. User enters a new patient ID and description of the task.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"jarrellc1"},"content":" Steps 3a1-3a2 are repeated until the data entered is correct.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"jarrellc1"},"content":" Use case resumes at step 2 if patient details are re-entered.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"jarrellc1"},"content":"**Use case: UC02 - Delete Emergency contact number**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"jarrellc1"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"jarrellc1"},"content":"1. Nurse chooses to delete an emergency contact number for a patient.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"jarrellc1"},"content":"2. NovaCare requests the patient\u0027s details to identify the patient.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"jarrellc1"},"content":"3. NovaCare displays the list of current emergency contacts for the patient.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"jarrellc1"},"content":"4. Nurse selects the contact to delete.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"jarrellc1"},"content":"5. NovaCare requests confirmation from the nurse to delete the selected contact.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"jarrellc1"},"content":"6. Nurse confirms the deletion.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"jarrellc1"},"content":"7. NovaCare deletes the selected emergency contact and displays a confirmation message with the updated emergency contact list.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"jarrellc1"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"jarrellc1"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"jarrellc1"},"content":"* 3a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"jarrellc1"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"jarrellc1"},"content":"* 3a. NovaCare detects that the patient does not exist.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"jarrellc1"},"content":" * 3a1. NovaCare notifies the nurse that the patient does not exist.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"jarrellc1"},"content":" * 3a2. Nurse either re-enters the correct patient details or cancels the operation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"jarrellc1"},"content":" Use case resumes at step 2 if patient details are re-entered.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":367,"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","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"jarrellc1"},"content":"4. The GUI should work well for standard screen resolutions 1920x1080 and higher, and for screen scales 100% and 125%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"jarrellc1"},"content":"5. The codebase should be modular, allowing easy updates or feature additions without affecting other parts of the system.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"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","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":401,"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","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":415,"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","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"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","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"jarrellc1":52,"xinweichong":7,"-":372}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jarrellc1"},"content":"Deletes the specified person and tasks associated to that person from the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jarrellc1"},"content":"* Deletes the person and task associated to that person at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jarrellc1"},"content":"* `find john doe` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jarrellc1"},"content":"### Adding a task : `addtask`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jarrellc1"},"content":"Adds a task to a person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jarrellc1"},"content":"Format: `addtask INDEX d/DESCRIPTION`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jarrellc1"},"content":"* Adds a task at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jarrellc1"},"content":"* `list` followed by `addtask 2 d/Eat paracetamol 1000mg` adds a task to the 2nd person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"jarrellc1"},"content":"* `find John doe` followed by `addtask 1 d/Clear diapers` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"jarrellc1"},"content":"![Person List](images/PersonListExample.png)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jarrellc1"},"content":"![Task List](images/TaskListExample.png)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jarrellc1"},"content":"### Deleting a task : `deletetask`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jarrellc1"},"content":"Deletes a task to a person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jarrellc1"},"content":"Format: `deletetask INDEX`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jarrellc1"},"content":"* Deletes a task at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jarrellc1"},"content":"* `deletetask 1` deletes the 1st task in the task list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"jarrellc1"},"content":"### Adding emergency contact : `emergency`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"jarrellc1"},"content":"Adds an emergency contact and details to a person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jarrellc1"},"content":"Format: `emergency INDEX n/EMERGENCY_CONTACT_NAME p/EMERGENCY_CONTACT_NUMBER`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jarrellc1"},"content":"* Adds an emergency contact and details at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jarrellc1"},"content":"* `emergency 1 n/tom tan p/91237171` adds an emergency contact `tom tan` with contact number `91237171` to 1st index in person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"jarrellc1"},"content":"### Adding priority level : `priority`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jarrellc1"},"content":"Adds an priority level to a person in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"jarrellc1"},"content":"Format: `priority /id INDEX /level PRIORITY_LEVEL`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jarrellc1"},"content":"* Adds a priority level at the specified `INDEX`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"jarrellc1"},"content":"* The priority level **must be a positive integer** and only from **1, 2, 3**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jarrellc1"},"content":"* `priotity /id 1 /level 2` adds priority level `2` to 1st index in person list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"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","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":222,"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","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"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","isFullCredit":false},{"lineNumber":228,"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","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"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","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":246,"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","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"jarrellc1"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"jarrellc1"},"content":"|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"jarrellc1"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"jarrellc1"},"content":"| **Add Task** | `addtask INDEX d/TASK_DESCRIPTION` \u003cbr\u003e e.g., `addtask 1 d/Eat paracetamol 1000mg` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"jarrellc1"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"jarrellc1"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"jarrellc1"},"content":"| **Delete Task** | `deletetask INDEX`\u003cbr\u003e e.g., `deletetask 3` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"jarrellc1"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"jarrellc1"},"content":"| **Emergency Contact** | `emergency INDEX n/EMERGENCY_CONTACT_NAME p/EMERGENCY_CONTACT_NUMBER`\u003cbr\u003e e.g., `emergency 3 n/Tom Tan p/97151717` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"jarrellc1"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"jarrellc1"},"content":"| **List** | `list` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"jarrellc1"},"content":"| **Priority** | `priority /id INDEX /level PRIORITY_LEVEL` \u003cbr\u003e e.g., `priority /id 1 /level 2` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"jarrellc1"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"jarrellc1":72,"-":194}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"jarrellc1":3,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jarrellc1"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jarrellc1"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jarrellc1"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jarrellc1":6,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_NONEXISTENT_PERSON \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" \"The person \u0027%1$s\u0027 does not exist in the system!\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"benjiBase":3,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to the task list. \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" + \"Parameters: INDEX d/DESCRIPTION\\n\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 d/Buy medication\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" private final String taskDescription;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" private final Index target;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" * Creates an AddTaskCommand to add the specified {@code Task} and associate it with {@code Person}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" public AddTaskCommand(Index target, String taskDescription) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" requireNonNull(taskDescription);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" this.target \u003d target;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" if (target.getZeroBased() \u003e\u003d model.getFilteredPersonList().size()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" throw new CommandException(MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" Person patient \u003d model.getFilteredPersonList().get(target.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" Task taskToAdd \u003d new Task(patient, taskDescription);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" if (model.hasTask(taskToAdd)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" model.addTask(taskToAdd);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, taskToAdd.getDescription()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":" return taskDescription.equals(otherAddTaskCommand.taskDescription)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" \u0026\u0026 target.equals(otherAddTaskCommand.target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" model.deleteAssociatedTasks(personToDelete);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"benjiBase":1,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" * Deletes a task identified using it\u0027s displayed index from the task list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" + \": Deletes the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted Task: %1$s for %2$s\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" public DeleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" Task taskToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, taskToDelete.getDescription(),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" taskToDelete.getPatient().getName()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" public String toString() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" .toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" // edit command does not allow editing emergency contacts","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" EmergencyContact updatedEmergencyContact \u003d personToEdit.getEmergencyContact();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel updatedPriorityLevel \u003d editPersonDescriptor.getPriorityLevel()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"gavinsoh"},"content":" .orElse(personToEdit.getPriorityLevel());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"gavinsoh"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedEmergencyContact,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"gavinsoh"},"content":" updatedTags, updatedPriorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"gavinsoh"},"content":" private PriorityLevel priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"gavinsoh"},"content":" setPriorityLevel(toCopy.priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"gavinsoh"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"gavinsoh"},"content":" public void setPriorityLevel(PriorityLevel priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"gavinsoh"},"content":" public Optional\u003cPriorityLevel\u003e getPriorityLevel() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"gavinsoh"},"content":" return Optional.ofNullable(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 Objects.equals(priorityLevel, otherEditPersonDescriptor.priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"gavinsoh"},"content":" .add(\"priorityLevel\", priorityLevel)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"jarrellc1":1,"gavinsoh":22,"-":239}},{"path":"src/main/java/seedu/address/logic/commands/EmergencyContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import java.util.List;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommand extends Command {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" public static final String COMMAND_WORD \u003d \"emergency\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" + \": Edits the emergency contact details of the person identified \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" + \"by the index number used in the last person listing.\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" + PREFIX_NAME + \"[EMERGENCY CONTACT NAME]\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + \"[EMERGENCY CONTACT NUMBER\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" + PREFIX_NAME + \"Richard Ng \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + \"82943718\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS \u003d \"Added emergency contact to Person: %1$s\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS \u003d \"Removed emergency contact from Person: %1$s\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_EMERGENCY_CONTACT_EXISTS \u003d \"Person: %1$s Already has a saved emergency contact\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" private final Index index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" private final EmergencyContact emergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" * @param index of the person in the filtered person list to edit the emergency contact details","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" * @param emergencyContact of the person to be updated to","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" public EmergencyContactCommand(Index index, EmergencyContact emergencyContact) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" requireAllNonNull(index, emergencyContact);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" this.emergencyContact \u003d emergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yixianggg"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yixianggg"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" if (personToEdit.getEmergencyContact() !\u003d null","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 !personToEdit.getEmergencyContact().contactName.isEmpty()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 !personToEdit.getEmergencyContact().contactNumber.isEmpty()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yixianggg"},"content":" throw new CommandException(generateEmergencyContactExistsMessage(personToEdit));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yixianggg"},"content":" personToEdit.getAddress(), emergencyContact, personToEdit.getTags(), personToEdit.getPriorityLevel());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yixianggg"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yixianggg"},"content":" * Generates a command execution success message based on whether the emergency contact is added to or removed from","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yixianggg"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yixianggg"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" String message \u003d !emergencyContact.contactName.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":" ? MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS : MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":" private String generateEmergencyContactExistsMessage(Person personToEdit) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":" return String.format(MESSAGE_EMERGENCY_CONTACT_EXISTS, personToEdit);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yixianggg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yixianggg"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yixianggg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yixianggg"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yixianggg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yixianggg"},"content":" if (!(other instanceof EmergencyContactCommand)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yixianggg"},"content":" // state check","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand e \u003d (EmergencyContactCommand) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yixianggg"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 emergencyContact.getName().equals(e.emergencyContact.getName())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 emergencyContact.getNumber().equals(e.emergencyContact.getNumber());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":100}},{"path":"src/main/java/seedu/address/logic/commands/MarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import java.util.List;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" * Marks a task identified using it\u0027s displayed index from the task list as complete.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" public static final String COMMAND_WORD \u003d \"marktask\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" + \": Marks the task identified by the index number used in the displayed task list as complete.\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Marked task as complete: %1$s for %2$s\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" public MarkTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" taskToMark.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, taskToMark.getDescription(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" taskToMark.getPatient().getName()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" if (!(other instanceof MarkTaskCommand)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand otherMarkTaskCommand \u003d (MarkTaskCommand) other;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" return targetIndex.equals(otherMarkTaskCommand.targetIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" public String toString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" .toString();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":70}},{"path":"src/main/java/seedu/address/logic/commands/PriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":" * Changes the priority level of an existing person in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"public class PriorityCommand extends Command {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" public static final String COMMAND_WORD \u003d \"priority\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sets the priority level for a patient identified by \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" + \"the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" + \"Parameters: id INDEX (must be a positive integer) /level LEVEL (must be 1, 2, or 3)\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" + \"Example: \" + COMMAND_WORD + \" /id 1 /level 2\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" private final int index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" private final int priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" * Constructs a new {@code PriorityCommand} with the specified index and priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" * @param index the index of the person in the list to which the priority level will be assigned.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel the priority level to be assigned to the person.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" * This should be a valid priority level as per the application\u0027s standards.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" public PriorityCommand(int index, int priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" * Executes the priority level update on the specified person in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" * @param model the model in which the person will be updated.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" * @return a command result that includes a success message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" * @throws CommandException if the index provided is out of bounds or the priority level is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(index - 1);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getName(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getPhone(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getEmail(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getAddress(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getEmergencyContact(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getTags(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" new PriorityLevel(priorityLevel));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" return new CommandResult(String.format(\"Priority level %d successfully set for %s\", priorityLevel,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" editedPerson.getName()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" throw new CommandException(\"Invalid patient ID. Please enter a valid patient identifier.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" throw new CommandException(\"Invalid priority level. Please enter 1/2/3 as the priority level.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" * Compares this object with another for equality, based on index and priority level.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" * @param other the object to compare this command against.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" * @return true if both objects have the same data fields.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand that \u003d (PriorityCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"gavinsoh"},"content":" return index \u003d\u003d that.index \u0026\u0026 priorityLevel \u003d\u003d that.priorityLevel;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"gavinsoh":80}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" PREFIX_PRIORITY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" // add command does not allow adding remarks straight away","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" EmergencyContact emergencyContact \u003d new EmergencyContact(\"\", \"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" // set default prioritylevel as 3","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel priorityLevel \u003d ParserUtil.parsePriorityLevel(argMultimap.getValue(PREFIX_PRIORITY).orElse(\"3\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" Person person \u003d new Person(name, phone, email, address, emergencyContact, tagList, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":10,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":" * Parses input arguments and creates a new AddTaskCommand object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" * Parses the given {@code String} of arguments in the context of the AddTaskCommand","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" * and returns an AddTaskCommand object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TASK_DESCRIPTION);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" Index index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" try {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" if (!argMultimap.getValue(PREFIX_TASK_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" String taskDescription \u003d argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" return new AddTaskCommand(index, taskDescription);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":44}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":" case EmergencyContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" return new EmergencyContactCommandParser().parse(arguments);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"gavinsoh"},"content":" case PriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"gavinsoh"},"content":" return new PriorityCommandParser().parse(arguments);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" return new MarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"benjiBase":8,"gavinsoh":4,"xinweichong":4,"-":86,"yixianggg":4}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":" /* Prefix definitions for person-related data */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public static final Prefix PREFIX_PRIORITY \u003d new Prefix(\"l/\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" /* Prefix definitions for task-related data */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"benjiBase":3,"gavinsoh":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" try {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"benjiBase":29}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" PREFIX_PRIORITY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" if (argMultimap.getValue(PREFIX_PRIORITY).isPresent()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" editPersonDescriptor.setPriorityLevel(ParserUtil.parsePriorityLevel(argMultimap","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" .getValue(PREFIX_PRIORITY).get()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"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","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"gavinsoh":9,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/EmergencyContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":" * Parses input arguments and creates a new {@code EmergencyContactCommand} object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommandParser implements Parser\u003cEmergencyContactCommand\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" * Parses the given {@code String} of arguments in the context of the {@code EmergencyContactCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" * and returns a {@code EmergencyContactCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" public EmergencyContactCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" Index index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" String contactName \u003d argMultimap.getValue(PREFIX_NAME).orElse(\"\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" String contactNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" return new EmergencyContactCommand(index, new EmergencyContact(contactName, contactNumber));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":37}},{"path":"src/main/java/seedu/address/logic/parser/MarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":" * Parses input arguments and creates a new MarkTaskCommand object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommandParser implements Parser\u003cMarkTaskCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" * Parses the given {@code String} of arguments in the context of the MarkTaskCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" * and returns a MarkTaskCommand object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" public MarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":28}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"gavinsoh"},"content":" * Parses a {@code String priorityLevel} into a {@code PriorityLevel}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"gavinsoh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel The string to parse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"gavinsoh"},"content":" * @return The parsed PriorityLevel object.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"gavinsoh"},"content":" * @throws ParseException if the given {@code priorityLevel} is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"gavinsoh"},"content":" public static PriorityLevel parsePriorityLevel(String priorityLevel) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"gavinsoh"},"content":" requireNonNull(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"gavinsoh"},"content":" String trimmedPriorityLevel \u003d priorityLevel.trim();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"gavinsoh"},"content":" if (trimmedPriorityLevel.isEmpty()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"gavinsoh"},"content":" return new PriorityLevel(3); // default level if none provided","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"gavinsoh"},"content":" int level;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"gavinsoh"},"content":" level \u003d Integer.parseInt(trimmedPriorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"gavinsoh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"gavinsoh"},"content":" throw new ParseException(\"Priority level must be a number.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"gavinsoh"},"content":" if (level \u003c 1 || level \u003e 3) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"gavinsoh"},"content":" throw new ParseException(\"Invalid priority level. Please enter 1, 2, or 3.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"gavinsoh"},"content":" return new PriorityLevel(level);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"gavinsoh":28,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/PriorityCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":" * Parses input arguments and creates a new PriorityCommand object","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"public class PriorityCommandParser implements Parser\u003cPriorityCommand\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public PriorityCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" String[] splitArgs \u003d args.trim().split(\"\\\\s+\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" int id \u003d Integer.parseInt(splitArgs[1]);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" int level \u003d Integer.parseInt(splitArgs[3]);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" return new PriorityCommand(id, level);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"gavinsoh":21,"xinweichong":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.UniqueTaskList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" private final UniqueTaskList tasks;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" tasks \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" * Replaces the contents of the task list with {@code tasks}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" this.tasks.setTasks(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" setTasks(newData.getTaskList());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" //// task-level operations","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" * Returns true if a task with the same identity as {@code task} exists in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" return tasks.contains(task);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" * Adds a task to the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" * The task must not already exist in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" tasks.add(task);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" * Replaces the given task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" * The {@code editedTask} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" requireNonNull(editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" tasks.setTask(target, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" public void removeTask(Task key) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" tasks.remove(key);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":131,"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"xinweichong"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"xinweichong"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"xinweichong"},"content":" return tasks.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"xinweichong"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"xinweichong"},"content":" \u0026\u0026 tasks.equals(otherAddressBook.tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"xinweichong":58,"-":129}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" * Returns true if a task with the same identity as {@code task} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"benjiBase"},"content":" * Deletes task from the list of a person.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"benjiBase"},"content":" void deleteTask(Task task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":" * Deletes all tasks associated with the given person.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" void deleteAssociatedTasks(Person target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"benjiBase"},"content":" * Adds the given task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" * {@code task} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":" void addTask(Task task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"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","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":" /** Returns an unmodifiable view of the task list */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"benjiBase":34,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.addressBook.getTaskList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" return addressBook.hasTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":" addressBook.removeTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks(Person personToDelete) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" List\u003cTask\u003e allTasks \u003d getFilteredTaskList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // Create a new list to store tasks to be deleted","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" List\u003cTask\u003e tasksToDelete \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":" if (task.getPatient().equals(personToDelete)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" tasksToDelete.add(task);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" // Delete all tasks associated with the person","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" for (Task task : tasksToDelete) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":" deleteTask(task);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" addressBook.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"benjiBase"},"content":" return filteredTasks;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"benjiBase"},"content":" requireAllNonNull(predicate);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"benjiBase"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"benjiBase":52,"-":148}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" ObservableList\u003cTask\u003e getTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"xinweichong":2,"-":17}},{"path":"src/main/java/seedu/address/model/person/EmergencyContact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":" * Represents a Person\u0027s emergency contact in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContact {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":" public final String contactName;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":" public final String contactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":" * Constructs a {@code EmergencyContact}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" * @param contactName A valid name.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" * @param contactNumber A valid number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" public EmergencyContact(String contactName, String contactNumber) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" requireNonNull(contactName);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" requireNonNull(contactNumber);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" public String getName() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" return this.contactName;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" public String getNumber() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" return this.contactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" if (contactName.isEmpty() || contactNumber.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" return \"No Emergency Contact\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" return \"Emergency Contact: \" + contactName + \", \" + contactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" || (other instanceof EmergencyContact // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 contactName.equals(((EmergencyContact) other).contactName)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 contactNumber.equals(((EmergencyContact) other).contactNumber)); // state check","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" return (contactName + \": \" + contactNumber).hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" private final EmergencyContact emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" private final PriorityLevel priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" public Person(Name name, Phone phone, Email email, Address address, EmergencyContact emergencyContact,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" Set\u003cTag\u003e tags, PriorityLevel priorityLevel) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" requireAllNonNull(name, phone, email, address, tags, priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" this.emergencyContact \u003d emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" public EmergencyContact getEmergencyContact() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" return emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" public PriorityLevel getPriorityLevel() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" return priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 priorityLevel.equals(otherPerson.priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"gavinsoh"},"content":" return Objects.hash(name, phone, email, address, tags, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"gavinsoh"},"content":" .add(\"emergency contact\", emergencyContact)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"gavinsoh"},"content":" .add(\"priorityLevel\", priorityLevel)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"gavinsoh":20,"-":113}},{"path":"src/main/java/seedu/address/model/person/PriorityLevel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":" * Represents a Person\u0027s priority level in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":" * Guarantees: immutable; is always valid as it is checked during construction.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"public class PriorityLevel {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Priority level must be 1, 2, or 3.\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":" private final int value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" * Constructs a {@code PriorityLevel}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" * @param value A valid priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" public PriorityLevel(int value) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" requireNonNull(value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" if (!isValidPriorityLevel(value)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" throw new IllegalArgumentException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" this.value \u003d value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" * Returns true if a given integer is a valid priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" public static boolean isValidPriorityLevel(int test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" return test \u003e\u003d 1 \u0026\u0026 test \u003c\u003d 3;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" public int getValue() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" return String.valueOf(value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" if (!(other instanceof PriorityLevel)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel that \u003d (PriorityLevel) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" return value \u003d\u003d that.value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" return Integer.hashCode(value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"gavinsoh":58}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import javafx.beans.property.SimpleBooleanProperty;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":" * Represents a Task in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"public class Task {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" private final Person patient;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" private final String description;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" private final SimpleBooleanProperty isComplete;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" public Task(Person patient, String description) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(patient, description);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" this.isComplete \u003d new SimpleBooleanProperty(false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" public Task(Person patient, String description, boolean isComplete) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(patient, description, isComplete);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" this.isComplete \u003d new SimpleBooleanProperty(isComplete);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" public Person getPatient() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" return patient;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" public String getDescription() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" return description;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" return this.isComplete.getValue();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" public SimpleBooleanProperty isCompleteProperty() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" return isComplete;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" public String getStatusString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" return this.getStatus() ? \"Complete\" : \"Incomplete\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" public void markTaskComplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" this.isComplete.set(true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" return patient.equals(otherTask.patient)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" \u0026\u0026 description.equals(otherTask.description);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" return Objects.hash(patient, description);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" .add(\"patient\", patient)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" .add(\"status\", getStatusString())","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":98}},{"path":"src/main/java/seedu/address/model/task/UniqueTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" * A list of tasks that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" * A task is considered unique by comparing using {@code String#equals(Object)}. As such, adding and updating of","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" * tasks uses {@code String#equals(Object)} for equality so as to ensure that the task being added or updated is","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" * unique in terms of identity in the UniqueTaskList.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":"public class UniqueTaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" private final ObservableList\u003cTask\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" private final ObservableList\u003cTask\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" * Returns true if the list contains an equivalent task as the given argument.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" public boolean contains(Task toCheck) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" * The task must not already exist in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" public void add(Task toAdd) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" * Replaces the task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" if (!target.equals(editedTask) \u0026\u0026 contains(editedTask)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" internalList.set(index, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" * Removes the equivalent task from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" * The task must exist in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" public void remove(Task toRemove) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" public void setTasks(UniqueTaskList replacement) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" * Replaces the contents of this list with {@code tasks}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" if (!tasksAreUnique(tasks)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" internalList.setAll(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" public ObservableList\u003cTask\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" if (!(other instanceof UniqueTaskList)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList otherUniqueTaskList \u003d (UniqueTaskList) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" return internalList.equals(otherUniqueTaskList.internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"xinweichong"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":" * Returns true if {@code tasks} contains only unique tasks.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"xinweichong"},"content":" private boolean tasksAreUnique(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"xinweichong"},"content":" for (int i \u003d 0; i \u003c tasks.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"xinweichong"},"content":" for (int j \u003d i + 1; j \u003c tasks.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"xinweichong"},"content":" if (tasks.get(i).equals(tasks.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":145}},{"path":"src/main/java/seedu/address/model/task/exceptions/DuplicateTaskException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":" * Signals that the operation will result in duplicate Tasks (Tasks are considered duplicates if they have the same","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":" * description and patient)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"public class DuplicateTaskException extends RuntimeException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":" public DuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":" super(\"Operation would result in duplicate tasks\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":11}},{"path":"src/main/java/seedu/address/model/task/exceptions/TaskNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":" * Signals that the operation is unable to find the specified task.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"public class TaskNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" public static final EmergencyContact EMPTY_EMERGENCY_CONTACT \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" new EmergencyContact(\"\", \"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"friends\"), new PriorityLevel(1)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"colleagues\", \"friends\"), new PriorityLevel(2)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"neighbours\"), new PriorityLevel(3)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"family\"), new PriorityLevel(1)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"classmates\"), new PriorityLevel(2)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"colleagues\"), new PriorityLevel(1))","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"gavinsoh":16,"-":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" private final String emergencyContactName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" private final String emergencyContactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" private final int priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" @JsonProperty(\"emergency contact name\") String emergencyContactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" @JsonProperty(\"emergency contact number\") String emergencyContactNumber,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" @JsonProperty(\"tagged\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" @JsonProperty(\"priorityLevel\") int priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" this.emergencyContactName \u003d emergencyContactName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" this.emergencyContactNumber \u003d emergencyContactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" emergencyContactName \u003d source.getEmergencyContact().contactName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" emergencyContactNumber \u003d source.getEmergencyContact().contactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" priorityLevel \u003d source.getPriorityLevel().getValue();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yixianggg"},"content":" if (emergencyContactName \u003d\u003d null || emergencyContactNumber \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yixianggg"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yixianggg"},"content":" EmergencyContact.class.getSimpleName()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yixianggg"},"content":" final EmergencyContact modelEmergencyContact \u003d new EmergencyContact(emergencyContactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yixianggg"},"content":" emergencyContactNumber);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"gavinsoh"},"content":" final PriorityLevel modelPriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"gavinsoh"},"content":" if (priorityLevel \u003d\u003d 0) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"gavinsoh"},"content":" modelPriorityLevel \u003d new PriorityLevel(3); // default priority level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"gavinsoh"},"content":" } else if (priorityLevel \u003e\u003d 1 \u0026\u0026 priorityLevel \u003c\u003d 3) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"gavinsoh"},"content":" modelPriorityLevel \u003d new PriorityLevel(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"gavinsoh"},"content":" } else {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"gavinsoh"},"content":" throw new IllegalValueException(PriorityLevel.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"gavinsoh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"gavinsoh"},"content":" modelEmergencyContact, modelTags, modelPriorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"jarrellc1":1,"gavinsoh":21,"-":107,"yixianggg":14}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"class JsonAdaptedTask {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" private final String description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" private final JsonAdaptedPerson patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" * Constructs a {@code JsonAdaptedTask} with the given task details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" public JsonAdaptedTask(@JsonProperty(\"description\") String description,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" @JsonProperty(\"patient\") JsonAdaptedPerson patient) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" description \u003d source.getDescription();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" patient \u003d new JsonAdaptedPerson(source.getPatient());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" if (this.description \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Description\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" if (this.patient \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Patient\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" if (this.description.trim().isEmpty()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(\"Task\u0027s description cannot be empty!\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jarrellc1"},"content":" Person modelPatient \u003d this.patient.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jarrellc1"},"content":" return new Task(modelPatient, description);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Tasks list contains duplicate task(s).\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons and tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" @JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" tasks.addAll(source.getTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jarrellc1"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jarrellc1"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jarrellc1"},"content":" if (addressBook.hasTask(task)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jarrellc1"},"content":" addressBook.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"jarrellc1":20,"-":59}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import java.awt.Desktop;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import java.net.URI;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import java.net.URISyntaxException;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import javafx.scene.control.Hyperlink;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2425s1-cs2103t-f15-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide:\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" private static final String HELP_COMMAND \u003d getAllCommands();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" @FXML","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" private Label helpCommands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" @FXML","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" private Hyperlink userGuideLink;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" * Creates a new HelpWindow. The HelpWindow will be set at","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" * foreground of the MainWindow until closed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" public HelpWindow(Stage root, Stage mainStage) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" root.setAlwaysOnTop(true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" helpCommands.setText(HELP_COMMAND);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" userGuideLink.setOnAction(event -\u003e openUserGuide());","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" mainStage.focusedProperty().addListener((obs, wasFocused, isNowFocused) -\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" if (isNowFocused) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" root.setAlwaysOnTop(true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" } else {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" root.setAlwaysOnTop(false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":" });","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":" public HelpWindow(Stage mainStage) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" this(new Stage(), mainStage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" * Returns the list of all commands.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":" public static String getAllCommands() {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" return \"Here are the list of commands available:\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" + \"1. add\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" + \"2. delete\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":" + \"3. addtask\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":" + \"4. deletetask\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" + \"5. emergency\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" + \"6. priority\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" + \"7. list\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" + \"8. help\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" + \"9. exit\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" + \"10. find\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":" + \"11. clear\\n\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":" * Opens the user guide in the default browser.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"benjiBase"},"content":" private void openUserGuide() {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"benjiBase"},"content":" try {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"benjiBase"},"content":" Desktop.getDesktop().browse(new URI(USERGUIDE_URL));","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"benjiBase"},"content":" } catch (IOException | URISyntaxException e) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":" logger.warning(\"Failed to open user guide: \" + e.getMessage());","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"benjiBase":61,"-":95}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jarrellc1"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" helpWindow \u003d new HelpWindow(primaryStage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jarrellc1"},"content":" TaskListPanel taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jarrellc1"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"jarrellc1":6,"benjiBase":1,"-":195}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" private Label emergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" private Label priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" emergencyContact.setText(person.getEmergencyContact().toString());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" priorityLevel.setText(\"Priority: \" + person.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jarrellc1":1,"gavinsoh":4,"-":59,"yixianggg":3}},{"path":"src/main/java/seedu/address/ui/TaskListCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":" * An UI component that displays information of a {@code Task}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":"public class TaskListCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" public final Task task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" private Label id;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" private Label description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" private Label patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" @FXML","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" private Label status;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" * Creates a {@code TaskListCard} with the given {@code Task} and index to display.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" public TaskListCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" super(FXML);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" this.task \u003d task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" description.setText(task.getDescription());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" patient.setText(task.getPatient().getName().fullName);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" status.textProperty().bind(task.isCompleteProperty().asString().map(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" isComplete -\u003e task.getStatusString()","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" ));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":36,"xinweichong":6}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * Panel containing the list of tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" * Creates a {@code TaskListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" super(FXML);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Task} using a {@code TaskListCard}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" setText(null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" setGraphic(new TaskListCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":44}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"#copyButton, #helpMessage, #userGuideLink, #helpCommands {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-background-color: gray;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"#helpMessage, #userGuideLink, #helpCommands {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"#userGuideLink {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" -fx-focus-color: transparent;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" -fx-underline: true;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-17","isFullCredit":false}],"authorContributionMap":{"benjiBase":10,"-":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"\u003c?import javafx.scene.control.Hyperlink?\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":14,"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" \u003cVBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"/\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" \u003cHyperlink fx:id\u003d\"userGuideLink\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" text\u003d\"https://ay2425s1-cs2103t-f15-1.github.io/tp/UserGuide.html(Click me)\" /\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" \u003cVBox fx:id\u003d\"helpCommandsContainer\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" \u003cLabel fx:id\u003d\"helpCommands\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":47,"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","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false}],"authorContributionMap":{"benjiBase":18,"-":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" title\u003d\"NovaCare\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"taskListPanelPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"jarrellc1":6,"benjiBase":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" \u003cLabel fx:id\u003d\"emergencyContact\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$emergencyContact\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" \u003cLabel fx:id\u003d\"priorityLevel\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$priorityLevel\" /\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"gavinsoh":2,"-":36}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"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-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" \u003c!-- Task ID --\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" \u003c!-- Task Description --\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" \u003c!-- Patient Name --\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" \u003cLabel fx:id\u003d\"patient\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" \u003c!-- Task Status --\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":34,"xinweichong":2}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" public void execute_validTaskCommand_success() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":" Person amy \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":" model.addPerson(amy);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" String addTaskCommand \u003d AddTaskCommand.COMMAND_WORD + \" 1\" + \" d/Buy medication\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" Task expectedTask \u003d new Task(amy, \"Buy medication\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" expectedModel.addPerson(amy);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" expectedModel.addTask(expectedTask);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" assertCommandSuccess(addTaskCommand,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" String.format(AddTaskCommand.MESSAGE_SUCCESS, \"Buy medication\"), expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"benjiBase"},"content":" // Create a task to add","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"benjiBase"},"content":" Person amy \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" model.addPerson(amy);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" Task task \u003d new Task(amy, \"Buy medication\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":" model.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" // Ensure the task is added correctly","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" ObservableList\u003cTask\u003e filteredTaskList \u003d logic.getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" assertEquals(1, filteredTaskList.size());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" assertEquals(task, filteredTaskList.get(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // Try to modify the list, which should throw an UnsupportedOperationException","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e filteredTaskList.remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"gavinsoh"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withPriorityLevel(3).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"benjiBase":38,"gavinsoh":1,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"benjiBase"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"benjiBase":31,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" private final ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" public void constructor_nullTaskDescription_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(Index.fromOneBased(1), null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null, \"Buy medication\"));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":" public void execute_indexDoesNotExist_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(outOfBoundIndex, \"Take medication\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_TASK_DISPLAYED_INDEX), () -\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" addTaskCommand.execute(model));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" public void execute_taskAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" ModelStubAcceptingTaskAdded modelStub \u003d new ModelStubAcceptingTaskAdded();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" Task validTask \u003d new Task(validPerson, \"Buy medication\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":" modelStub.addPerson(validPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(index, validTask.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" CommandResult commandResult \u003d addTaskCommand.execute(modelStub);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" modelStub.addPerson(validPerson);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" assertEquals(String.format(AddTaskCommand.MESSAGE_SUCCESS, validTask.getDescription()),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"benjiBase"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"benjiBase"},"content":" assertEquals(Arrays.asList(validTask), modelStub.tasksAdded);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"benjiBase"},"content":" public void execute_duplicateTask_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":" ModelStubAcceptingTaskAdded modelStub \u003d new ModelStubAcceptingTaskAdded();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":" Person validPerson \u003d new PersonBuilder().withName(\"Amy Bee\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" modelStub.addPerson(validPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"benjiBase"},"content":" Task validTask \u003d new Task(validPerson, \"Buy medication\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"benjiBase"},"content":" modelStub.addTask(validTask);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"benjiBase"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(index, validTask.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" assertThrows(CommandException.class, AddTaskCommand.MESSAGE_DUPLICATE_TASK, () -\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" addTaskCommand.execute(modelStub));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Buy meds\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Visit hospital\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" Index index2 \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1Command \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask2Command \u003d new AddTaskCommand(index2, task2.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":" assertTrue(addTask1Command.equals(addTask1Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"benjiBase"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1CommandCopy \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" assertTrue(addTask1Command.equals(addTask1CommandCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(1));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // different task -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(addTask2Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" public void equals_sameTaskDescriptionDifferentIndex_returnsFalse() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Alice\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Bob\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":" Index index2 \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1Command \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask2Command \u003d new AddTaskCommand(index2, task2.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"benjiBase"},"content":" // Different personName should return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(addTask2Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" public void equals_sameIndexDifferentDescriptionObjects_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Alice\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Alice\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1Command \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask2Command \u003d new AddTaskCommand(index1, task2.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"benjiBase"},"content":" // Different Person objects but same name, should return true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"benjiBase"},"content":" assertTrue(addTask1Command.equals(addTask2Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"benjiBase"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"benjiBase"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"benjiBase"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"benjiBase"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"benjiBase"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"benjiBase"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"benjiBase"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"benjiBase"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"benjiBase"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"benjiBase"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"benjiBase"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"benjiBase"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"benjiBase"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"benjiBase"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"benjiBase"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"benjiBase"},"content":" * A Model stub that always accepts the task being added.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"benjiBase"},"content":" private class ModelStubAcceptingTaskAdded extends ModelStub {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"benjiBase"},"content":" final ArrayList\u003cTask\u003e tasksAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"benjiBase"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"benjiBase"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"benjiBase"},"content":" tasksAdded.add(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"benjiBase"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"benjiBase"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"benjiBase"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"benjiBase"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"benjiBase"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"benjiBase"},"content":" return FXCollections.observableArrayList(personsAdded);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"benjiBase"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"benjiBase"},"content":" return tasksAdded.stream().anyMatch(t -\u003e t.equals(task));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"benjiBase"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"benjiBase"},"content":" return new AddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":303}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NAME_AMY \u003d \"Timothy\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NAME_BOB \u003d \"Xiao Ming\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NUMBER_AMY \u003d \"33333333\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NUMBER_BOB \u003d \"44444444\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" public static final String VALID_TASK_DESCRIPTION_BUY_MEDICATION \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" public static final int VALID_PRIORITY_AMY \u003d 2;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" public static final int VALID_PRIORITY_BOB \u003d 1;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" public static final int VALID_PRIORITY_LEVEL \u003d 1;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" public static final String PRIORITY_DESC_AMY \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" public static final String PRIORITY_DESC_BOB \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" public static final int INVALID_PRIORITY_LEVEL \u003d 4;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":" public static final String INVALID_TASK_DESCRIPTION_DESC \u003d \" \" + PREFIX_TASK_DESCRIPTION + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"gavinsoh"},"content":" .withTags(VALID_TAG_FRIEND).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"gavinsoh"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" * Updates {@code model}\u0027s filtered list to show only the task at the given {@code targetIndex} in the","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" * {@code model}\u0027s task list.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":" public static void showTaskAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"benjiBase"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredTaskList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"benjiBase"},"content":" Task task \u003d model.getFilteredTaskList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"benjiBase"},"content":" final String taskDescription \u003d task.getDescription();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"benjiBase"},"content":" model.updateFilteredTaskList(t -\u003e t.getDescription().equals(taskDescription));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"benjiBase"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"benjiBase":18,"gavinsoh":10,"-":125,"yixianggg":4}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalAddressBookWithTasks;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBookWithTasks(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" taskToDelete.getDescription(), taskToDelete.getPatient().getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" showTaskAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" taskToDelete.getDescription(), taskToDelete.getPatient().getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" showNoTask(expectedModel);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"benjiBase"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"benjiBase"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"benjiBase"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"benjiBase"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"benjiBase"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"benjiBase"},"content":" // different task -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"benjiBase"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" private void showNoTask(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" model.updateFilteredTaskList(t -\u003e false);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":" assertTrue(model.getFilteredTaskList().isEmpty());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":109}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", priorityLevel\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" + editPersonDescriptor.getPriorityLevel().orElse(null)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":3,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/EmergencyContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NAME_AMY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NAME_BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIFTH_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FOURTH_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommandTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" private static final String EMERGENCY_CONTACT_NAME_STUB \u003d \"Some name\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" private static final String EMERGENCY_CONTACT_NUMBER_STUB \u003d \"Some number\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" public void execute_addEmergencyContactUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" Person thirdPerson \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(thirdPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_THIRD_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(thirdPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" public void execute_deleteEmergencyContactUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" // TODO To edit after implementing delete emergency contact function","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withEmergencyContact(\"\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yixianggg"},"content":" \"\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_THIRD_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yixianggg"},"content":" showPersonAtIndex(model, INDEX_THIRD_PERSON);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" public void execute_overrideEmergencyContactWithOnlyNameUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" Person fourthPerson \u003d model.getFilteredPersonList().get(INDEX_FOURTH_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(fourthPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FOURTH_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(fourthPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yixianggg"},"content":" public void execute_overrideEmergencyContactWithOnlyNumberUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yixianggg"},"content":" Person fifthPerson \u003d model.getFilteredPersonList().get(INDEX_FIFTH_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(fifthPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FIFTH_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(fifthPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yixianggg"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yixianggg"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_BOB, VALID_EMERGENCY_CONTACT_NUMBER_BOB));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(emergencyContactCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yixianggg"},"content":" public void execute_overrideEmergencyContactUnfilteredList_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_EMERGENCY_CONTACT_EXISTS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(emergencyContactCommand, model, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yixianggg"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yixianggg"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yixianggg"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yixianggg"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yixianggg"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_BOB, VALID_EMERGENCY_CONTACT_NUMBER_BOB));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(emergencyContactCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yixianggg"},"content":" public void equals() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yixianggg"},"content":" final EmergencyContactCommand standardCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_AMY, VALID_EMERGENCY_CONTACT_NUMBER_AMY));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yixianggg"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand commandWithSameValues \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_AMY, VALID_EMERGENCY_CONTACT_NUMBER_AMY));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yixianggg"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yixianggg"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yixianggg"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yixianggg"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yixianggg"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yixianggg"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new EmergencyContactCommand(INDEX_SECOND_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_AMY, VALID_EMERGENCY_CONTACT_NUMBER_AMY))));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yixianggg"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_BOB, VALID_EMERGENCY_CONTACT_NUMBER_BOB))));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":164}},{"path":"src/test/java/seedu/address/logic/commands/MarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalAddressBookWithTasks;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBookWithTasks(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" taskToMark.getDescription(), taskToMark.getPatient().getName());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" taskToMark.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" showTaskAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" taskToMark.getDescription(), taskToMark.getPatient().getName());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" taskToMark.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" showNoTask(expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":" showTaskAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" public void equals() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markFirstCommand \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markSecondCommand \u003d new MarkTaskCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" assertTrue(markFirstCommand.equals(markFirstCommand));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markFirstCommandCopy \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" assertTrue(markFirstCommand.equals(markFirstCommandCopy));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" assertFalse(markFirstCommand.equals(1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" assertFalse(markFirstCommand.equals(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" // different task -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" assertFalse(markFirstCommand.equals(markSecondCommand));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(targetIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" String expected \u003d MarkTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" assertEquals(expected, markTaskCommand.toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" private void showNoTask(Model model) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" model.updateFilteredTaskList(t -\u003e false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":" assertTrue(model.getFilteredTaskList().isEmpty());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":110}},{"path":"src/test/java/seedu/address/logic/commands/PriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_LEVEL;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" * Contains integration tests (interaction with the Model) and unit tests for PriorityCommand.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":"public class PriorityCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" public void execute_addValidPriorityLevelUnfilteredList_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(INDEX_FIRST_PERSON.getOneBased(), VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d String.format(\"Priority level %d successfully set for %s\", VALID_PRIORITY_LEVEL,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" editedPerson.getName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" assertCommandSuccess(priorityCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" final PriorityCommand standardCommand \u003d new PriorityCommand(INDEX_FIRST_PERSON.getZeroBased(), 1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand commandWithSameValues \u003d new PriorityCommand(INDEX_FIRST_PERSON.getZeroBased(), 1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(new PriorityCommand(INDEX_SECOND_PERSON.getZeroBased(), 1)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" // different priorityLevel -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(new PriorityCommand(INDEX_FIRST_PERSON.getZeroBased(), 2)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"gavinsoh":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"gavinsoh"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"gavinsoh"},"content":" .withTags()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"gavinsoh"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND + PRIORITY_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"gavinsoh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"gavinsoh":20,"-":181}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_DESCRIPTION_BUY_MEDICATION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand expectedCommand \u003d new AddTaskCommand(index1, \"Buy medication\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" // Correct format with `d/` and `p/`","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" assertParseSuccess(parser, \"1 d/Buy medication\", expectedCommand);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" // missing task description","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, NAME_DESC_BOB, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" // missing person name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, VALID_TASK_DESCRIPTION_BUY_MEDICATION,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" // invalid task description and valid index","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, \"addtask 1 p/!nv@l!d description\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" // valid task description and invalid index","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, \"addtask a d/Buy medication\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" String validTaskString \u003d VALID_TASK_DESCRIPTION_BUY_MEDICATION + NAME_DESC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" // multiple task descriptions","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, VALID_TASK_DESCRIPTION_BUY_MEDICATION + validTaskString,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" // multiple person names","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, validTaskString + NAME_DESC_BOB,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":62}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":" public void parseCommand_emergencyContact() throws Exception {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yixianggg"},"content":" final EmergencyContact emergencyContact \u003d new EmergencyContact(\"Lily\", \"12345678\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand command \u003d (EmergencyContactCommand) parser.parseCommand(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yixianggg"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PREFIX_NAME + emergencyContact.getName() + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + emergencyContact.getNumber());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yixianggg"},"content":" assertEquals(new EmergencyContactCommand(INDEX_FIRST_PERSON, emergencyContact), command);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" public void parseCommand_mark() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand command \u003d (MarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" assertEquals(new MarkTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" public void parseCommand_addTask() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" String taskDescription \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand expectedCommand \u003d new AddTaskCommand(index1, taskDescription);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":" String userInput \u003d AddTaskCommand.COMMAND_WORD + \" 1\" + \" d/\" + taskDescription;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"benjiBase"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"gavinsoh"},"content":" public void parseCommand_priorityMissingLevel_throwsParseException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand.MESSAGE_USAGE), () -\u003e parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"jarrellc1":2,"benjiBase":15,"gavinsoh":8,"xinweichong":8,"-":101,"yixianggg":14}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" public void parse_validArgs_returnsDeleteTaskCommand() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" assertParseSuccess(parser, \"1\", new DeleteTaskCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"benjiBase":25}},{"path":"src/test/java/seedu/address/logic/parser/EmergencyContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommandParserTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" private EmergencyContactCommandParser parser \u003d new EmergencyContactCommandParser();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" private final String nonEmptyEmergencyContactName \u003d \"Lily\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" private final String nonEmptyEmergencyContactNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" // have remark","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_NAME + nonEmptyEmergencyContactName + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + nonEmptyEmergencyContactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand expectedCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(nonEmptyEmergencyContactName, nonEmptyEmergencyContactNumber));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" // no remark","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_NAME + \" \" + PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" expectedCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(\"\", \"\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, EmergencyContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" // no parameters","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, EmergencyContactCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" // no index","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, EmergencyContactCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" + PREFIX_NAME + nonEmptyEmergencyContactName + \" \" + PREFIX_PHONE","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" + nonEmptyEmergencyContactNumber, expectedMessage);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":45}},{"path":"src/test/java/seedu/address/logic/parser/MarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommandParserTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" private MarkTaskCommandParser parser \u003d new MarkTaskCommandParser();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" public void parse_validArgs_returnsDeleteTaskCommand() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" assertParseSuccess(parser, \"1\", new MarkTaskCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":25}},{"path":"src/test/java/seedu/address/logic/parser/PriorityCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"public class PriorityCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":" private PriorityCommandParser parser \u003d new PriorityCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" public void parse_extraArgs_throwsParseException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" // Too many arguments","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" assertParseFailure(parser, \" 1 id 5 level 2 extra\",","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"xinweichong":27}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" assertEquals(Collections.emptyList(), addressBook.getTaskList());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" //// Person-list tests","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e newTasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newTasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" //// Task-related tests","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":" public void resetData_withDuplicateTasks_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" // Two tasks with the same identity fields","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" Task duplicateTask \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" List\u003cPerson\u003e newPersons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e newTasks \u003d Arrays.asList(taskOne, duplicateTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newTasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasTask(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" public void hasTask_taskNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" assertFalse(addressBook.hasTask(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" public void hasTask_taskInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" addressBook.addTask(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":" assertTrue(addressBook.hasTask(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":" public void getTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getTaskList().remove(0));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":" + \", tasks\u003d\" + addressBook.getTaskList() + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"xinweichong"},"content":" private final ObservableList\u003cTask\u003e tasks \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"xinweichong"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons, Collection\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"xinweichong"},"content":" this.tasks.setAll(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"xinweichong"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"xinweichong"},"content":" return tasks;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"xinweichong":55,"-":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" public void hasTask_taskNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" Task task \u003d new TaskBuilder().withDescription(\"Buy medication\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" assertFalse(modelManager.hasTask(task));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" public void hasTask_taskInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" Task task \u003d new TaskBuilder().withDescription(\"Buy medication\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":" modelManager.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" assertTrue(modelManager.hasTask(task));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredTaskList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks_personWithTasks_tasksDeleted() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Task 1\").withPatient(ALICE).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Task 2\").withPatient(ALICE).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // Add the tasks to the model","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" modelManager.addTask(task1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" modelManager.addTask(task2);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":" assertTrue(modelManager.hasTask(task1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" assertTrue(modelManager.hasTask(task2));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" modelManager.deleteAssociatedTasks(ALICE);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" assertFalse(modelManager.hasTask(task1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" assertFalse(modelManager.hasTask(task2));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"benjiBase":38,"-":132}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_LEVEL;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"gavinsoh"},"content":" // different priorityLevel -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"gavinsoh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"gavinsoh"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"gavinsoh"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"gavinsoh"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"gavinsoh"},"content":" + \", emergency contact\u003d\" + ALICE.getEmergencyContact()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" + \", priorityLevel\u003d\" + ALICE.getPriorityLevel().toString() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"gavinsoh":12,"-":97}},{"path":"src/test/java/seedu/address/model/person/PriorityLevelTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"public class PriorityLevelTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel priorityLevel \u003d new PriorityLevel(1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" assertTrue(priorityLevel.equals(priorityLevel));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel priorityLevelCopy \u003d new PriorityLevel(priorityLevel.getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" assertTrue(priorityLevel.equals(priorityLevelCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" assertFalse(priorityLevel.equals(1));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" assertFalse(priorityLevel.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" // different priority level -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel differentPriorityLevel \u003d new PriorityLevel(2);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" assertFalse(priorityLevel.equals(differentPriorityLevel));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"gavinsoh":31}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"public class TaskTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" private static final String VALID_DESCRIPTION_ONE \u003d \"Administer medication\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" private static final String VALID_DESCRIPTION_TWO \u003d \"Routine check-up\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" public void constructor_nullFields_throwsNullPointerException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" // Test for null patient","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(null, VALID_DESCRIPTION_ONE));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" // Test for null description","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(ALICE, null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" // Test for both null patient and description","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(null, null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" public void constructor_validFields_setsStatusAsIncompleteByDefault() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" Task incompleteTask \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" Task completeTask \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" assertFalse(incompleteTask.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" assertTrue(completeTask.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" public void getPatient_validTask_returnsCorrectPatient() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" assertEquals(ALICE, task.getPatient());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" public void getDescription_validTask_returnsCorrectDescription() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" assertEquals(VALID_DESCRIPTION_ONE, task.getDescription());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" public void getStatus_incompleteTask_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" assertFalse(task.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" public void getStatus_completeTask_returnsTrue() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" assertTrue(task.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" public void getStatusString_incompleteTask_returnsIncomplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" assertEquals(\"Incomplete\", task.getStatusString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" public void getStatusString_completeTask_returnsComplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" assertEquals(\"Complete\", task.getStatusString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" public void markTaskComplete_incompleteTask_marksAsComplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" assertFalse(task.getStatus()); // initially incomplete","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" task.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" assertTrue(task.getStatus()); // now marked as complete","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" assertEquals(\"Complete\", task.getStatusString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" public void equals_sameValues_returnsTrue() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" Task taskOneCopy \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" assertTrue(taskOne.equals(taskOneCopy));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" assertTrue(taskOne.equals(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" public void equals_null_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(5));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" public void equals_differentDescription_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" Task taskTwo \u003d new Task(ALICE, VALID_DESCRIPTION_TWO);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(taskTwo));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":" public void equals_differentPatient_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" Task taskWithDifferentPerson \u003d new Task(BOB, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(taskWithDifferentPerson));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":" public void toString_validTask_returnsExpectedString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":" String expected \u003d Task.class.getCanonicalName()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":" + \"{patient\u003d\" + task.getPatient()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" + \", description\u003d\" + task.getDescription()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":" + \", status\u003d\" + task.getStatusString()","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"xinweichong"},"content":" + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"xinweichong"},"content":" assertEquals(expected, task.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":133}},{"path":"src/test/java/seedu/address/model/task/UniqueTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"public class UniqueTaskListTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" private final UniqueTaskList uniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" private final Task taskOne \u003d new Task(ALICE, \"Administer medication\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" private final Task taskTwo \u003d new Task(BOB, \"Routine check-up\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" public void contains_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.contains(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" public void contains_taskNotInList_returnsFalse() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" assertFalse(uniqueTaskList.contains(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" public void contains_taskInList_returnsTrue() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" assertTrue(uniqueTaskList.contains(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" public void add_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.add(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" public void add_duplicateTask_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e uniqueTaskList.add(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":" public void setTask_nullTargetTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTask(null, taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" public void setTask_nullEditedTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTask(taskOne, null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" public void setTask_targetTaskNotInList_throwsTaskNotFoundException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e uniqueTaskList.setTask(taskOne, taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskIsSameTask_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTask(taskOne, taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskHasSameIdentity_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" Task editedTask \u003d new Task(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" new PersonBuilder(ALICE).withAddress(\"New Address\").build(), \"Administer medication\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTask(taskOne, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTask(taskOne, taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskHasNonUniqueIdentity_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e uniqueTaskList.setTask(taskOne, taskTwo));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" public void remove_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.remove(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" public void remove_taskDoesNotExist_throwsTaskNotFoundException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e uniqueTaskList.remove(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" public void remove_existingTask_removesTask() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.remove(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" public void setTasks_nullUniqueTaskList_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTasks((UniqueTaskList) null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" public void setTasks_uniqueTaskList_replacesOwnListWithProvidedUniqueTaskList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTasks(expectedUniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"xinweichong"},"content":" public void setTasks_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTasks((List\u003cTask\u003e) null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"xinweichong"},"content":" public void setTasks_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e taskList \u003d Collections.singletonList(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTasks(taskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"xinweichong"},"content":" public void setTasks_listWithDuplicateTasks_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e listWithDuplicateTasks \u003d Arrays.asList(taskOne, taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e uniqueTaskList.setTasks(listWithDuplicateTasks));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"xinweichong"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"xinweichong"},"content":" assertThrows(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"xinweichong"},"content":" UnsupportedOperationException.class, () -\u003e uniqueTaskList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"xinweichong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"xinweichong"},"content":" assertEquals(uniqueTaskList.asUnmodifiableObservableList().toString(), uniqueTaskList.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":167}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" public void getSamplePersons_notNull() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" assertNotNull(SampleDataUtil.getSamplePersons());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" public void getSamplePersons_correctData() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" Person firstPerson \u003d samplePersons[0];","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Alex Yeoh\", firstPerson.getName().fullName);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"87438807\", firstPerson.getPhone().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"alexyeoh@example.com\", firstPerson.getEmail().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPerson.getAddress().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" assertEquals(1, firstPerson.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" public void getSampleAddressBook_containsExpectedPersons() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" ReadOnlyAddressBook sampleAb \u003d SampleDataUtil.getSampleAddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" assertNotNull(sampleAb);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" assertEquals(6, sampleAb.getPersonList().size()); // assuming there are 6 sample persons","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" Person firstPerson \u003d sampleAb.getPersonList().get(0);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Alex Yeoh\", firstPerson.getName().fullName);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"87438807\", firstPerson.getPhone().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"alexyeoh@example.com\", firstPerson.getEmail().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPerson.getAddress().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" assertEquals(1, firstPerson.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" public void getTagSet_correctSetSizeAndContents() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" Set\u003cTag\u003e tags \u003d SampleDataUtil.getTagSet(\"friends\", \"colleagues\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" assertEquals(2, tags.size());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" assertTrue(tags.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" assertTrue(tags.contains(new Tag(\"colleagues\")));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"gavinsoh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" private static final String VALID_EMERGENCY_CONTACT_NAME \u003d BENSON.getEmergencyContact().getName();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" private static final String VALID_EMERGENCY_CONTACT_NUMBER \u003d BENSON.getEmergencyContact().getNumber();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" private static final int INVALID_PRIORITY_LEVEL \u003d 4; // valid levels are 1, 2, 3","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" private static final int VALID_PRIORITY_LEVEL \u003d 2;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" public void toModelType_invalidPriorityLevel_throwsIllegalValueException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_EMERGENCY_CONTACT_NAME,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, INVALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d PriorityLevel.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"gavinsoh"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_EMERGENCY_CONTACT_NAME,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_EMERGENCY_CONTACT_NAME,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NUMBER, invalidTags, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"gavinsoh":14,"-":99,"yixianggg":19}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.storage.JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":" private static final String INVALID_DESCRIPTION \u003d \" \"; // Description cannot be empty","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" private static final String VALID_DESCRIPTION \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" private static final JsonAdaptedPerson VALID_PATIENT \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" private static final JsonAdaptedPerson INVALID_PATIENT \u003d new JsonAdaptedPerson(\"R@chel\", BENSON.getPhone().value,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" BENSON.getEmail().value, BENSON.getAddress().value, BENSON.getEmergencyContact().getName(),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" BENSON.getEmergencyContact().getNumber(), BENSON.getTags().stream().map(JsonAdaptedTag::new).toList(),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" BENSON.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_validTaskDetails_returnsTask() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" Task task \u003d new Task(BENSON, VALID_DESCRIPTION);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask adaptedTask \u003d new JsonAdaptedTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" assertEquals(task, adaptedTask.toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(null, VALID_PATIENT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Description\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_nullPatient_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_DESCRIPTION, null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Patient\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(INVALID_DESCRIPTION, VALID_PATIENT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_invalidPatient_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_DESCRIPTION, INVALID_PATIENT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":53,"yixianggg":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" private static final Path TYPICAL_TASKS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalTasksAddressBook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" private static final Path INVALID_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidTaskAddressBook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" private static final Path DUPLICATE_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTaskAddressBook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_typicalTasksFile_success() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_TASKS_FILE,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jarrellc1"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jarrellc1"},"content":" AddressBook expectedAddressBook \u003d new AddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addPerson(new PersonBuilder(ALICE).build());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addPerson(new PersonBuilder(BENSON).build());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addTask(new Task(new PersonBuilder(ALICE).build(), \"Buy medication\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addTask(new Task(new PersonBuilder(BENSON).build(), \"Visit doctor\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jarrellc1"},"content":" assertEquals(expectedAddressBook, addressBookFromFile);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_invalidTaskFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_TASK_FILE,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TASK_FILE,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_TASK,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jarrellc1"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"jarrellc1":40,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" descriptor.setPriorityLevel(person.getPriorityLevel());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"gavinsoh"},"content":" * Sets the {@code PriorityLevel} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel the priority level to set for the person, must be a valid integer representing","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"gavinsoh"},"content":" * the priority (typically 1, 2, or 3).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"gavinsoh"},"content":" * @return the current instance of {@code EditPersonDescriptorBuilder} with the updated priority level.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"gavinsoh"},"content":" public EditPersonDescriptorBuilder withPriorityLevel(int priorityLevel) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"gavinsoh"},"content":" descriptor.setPriorityLevel(new PriorityLevel(priorityLevel));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"gavinsoh"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":14,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" public static final String DEFAULT_EMERGENCY_CONTACT_NAME \u003d \"Billy\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" public static final String DEFAULT_EMERGENCY_CONTACT_NUMBER \u003d \"77777777\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" public static final int DEFAULT_PRIORITY_LEVEL \u003d 3;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" private EmergencyContact emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" private PriorityLevel priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" emergencyContact \u003d new EmergencyContact(\"\", \"\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" priorityLevel \u003d new PriorityLevel(DEFAULT_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" emergencyContact \u003d personToCopy.getEmergencyContact();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" priorityLevel \u003d personToCopy.getPriorityLevel();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"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","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" * Sets the {@code EmergencyContact} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"gavinsoh"},"content":" public PersonBuilder withEmergencyContact(String emergencyContactName, String emergencyContactNumber) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"gavinsoh"},"content":" this.emergencyContact \u003d new EmergencyContact(emergencyContactName, emergencyContactNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"gavinsoh"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"gavinsoh"},"content":" * Sets the {@code PriorityLevel} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel The priority level to be assigned to the person, represented as an integer.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"gavinsoh"},"content":" * Must be a valid priority level (typically within a predefined range, e.g., 1-3).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"gavinsoh"},"content":" * @return The current instance of {@code PersonBuilder} with the updated priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"gavinsoh"},"content":" public PersonBuilder withPriorityLevel(int priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d new PriorityLevel(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"gavinsoh"},"content":" return this;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":" return new Person(name, phone, email, address, emergencyContact, tags, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"jarrellc1":2,"gavinsoh":29,"-":95,"yixianggg":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" sb.append(PREFIX_PRIORITY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" descriptor.getPriorityLevel().ifPresent(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" priorityLevel -\u003e sb.append(PREFIX_PRIORITY).append(priorityLevel.getValue()).append(\" \"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":4,"-":62}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":" * A utility class to help with building Task objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"public class TaskBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":" public static final Name DEFAULT_PATIENT_NAME \u003d new Name(\"John Doe\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" private String description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" private Person patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" * Initializes the TaskBuilder with the default task details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" public TaskBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" this.description \u003d DEFAULT_DESCRIPTION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" this.patient \u003d new PersonBuilder().withName(DEFAULT_PATIENT_NAME.fullName).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" * Sets the {@code description} of the {@code Task} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" public TaskBuilder withDescription(String description) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" * Sets the {@code patient} of the {@code Task} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" public TaskBuilder withPatient(Person patient) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" * Builds and returns the {@code Task}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" public Task build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" return new Task(patient, description);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":" public static final Index INDEX_FOURTH_PERSON \u003d Index.fromOneBased(4);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":" public static final Index INDEX_FIFTH_PERSON \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05","isFullCredit":false}],"authorContributionMap":{"-":12,"yixianggg":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_LEVEL;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"Billy\", \"77777777\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"Ken\", \"66666666\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"Rich\", \"\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" .withTags(\"friends\").withPriorityLevel(3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"\", \"99999999\").withPriorityLevel(3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_LEVEL)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"gavinsoh":23,"-":66,"yixianggg":7}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class TypicalTasks {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" public static final Task BUY_MEDICATION \u003d new TaskBuilder().withDescription(\"Buy medication\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.ALICE).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" public static final Task VISIT_DOCTOR \u003d new TaskBuilder().withDescription(\"Visit doctor\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.BENSON).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" public static final Task FILL_PRESCRIPTION \u003d new TaskBuilder().withDescription(\"Fill prescription\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.CARL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" public static final Task CALL_FAMILY \u003d new TaskBuilder().withDescription(\"Call family\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.DANIEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" public static final Task CHECK_VITALS \u003d new TaskBuilder().withDescription(\"Check vitals\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.ELLE).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" public static final Task FOLLOW_UP_APPOINTMENT \u003d new TaskBuilder().withDescription(\"Follow-up appointment\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.FIONA).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" public static final Task REMIND_PATIENT \u003d new TaskBuilder().withDescription(\"Remind patient of medication\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.GEORGE).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" // Manually added tasks","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" public static final Task CONSULTATION \u003d new TaskBuilder().withDescription(\"Consultation with specialist\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.HOON).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" public static final Task MEDICAL_REPORT \u003d new TaskBuilder().withDescription(\"Submit medical report\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.IDA).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" private TypicalTasks() {} // prevents instantiation","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" * Returns an {@code AddressBook} with all the typical tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" public static AddressBook getTypicalAddressBookWithTasks() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" AddressBook ab \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" for (Task task : getTypicalTasks()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" ab.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jarrellc1"},"content":" public static List\u003cTask\u003e getTypicalTasks() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(BUY_MEDICATION, VISIT_DOCTOR, FILL_PRESCRIPTION, CALL_FAMILY,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jarrellc1"},"content":" CHECK_VITALS, FOLLOW_UP_APPOINTMENT, REMIND_PATIENT));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":53}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F15-1/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F15-1/tp/graph/badge.svg?token\u003dRD8J2QZCMC)](https://codecov.io/gh/AY2425S1-CS2103T-F15-1/tp)","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"* The product `NovaCare` targets healthcare professionals, particularly nurses, with the aim of optimizing patient care and task management. ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"* This application is designed to **improve efficiency** by providing a clear overview of patient information, critical tasks, and emergency contacts, reducing reliance on manual documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"* It is named `NovaCare`, a blend of \"new\" (Nova) and \"care\", symbolizing a fresh approach to managing patient information and tasks.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"* `NovaCare` enhances patient care by **organizing and tracking critical data**, allowing healthcare personnel to prioritize their time and focus on urgent tasks. The system provides:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":" * **Organized Patient Care**: Efficient management of patient information such as personal details, emergency contact details and priority.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":" * **Task Management**: Nurses can add, track, and complete tasks like administering medication or checking vitals, ensuring no task is overlooked.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":" * **Critical Insights**: A centralized dashboard displays patient data and task overviews, enabling quick identification of patients needing immediate attention.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"* For the detailed documentation of this project, see the **[NovaCare Product Website](https://ay2425s1-cs2103t-f15-1.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"-":4,"yixianggg":10}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"### Gavin Soh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"\u003cimg src\u003d\"images/gavinsoh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"[[github](http://github.com/gavinsoh)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":"### Jarrell Chia","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"\u003cimg src\u003d\"images/jarrellc1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":"[[github](https://github.com/jarrellc1)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"* Role: Project Advisor","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":"### Choo Yi Xiang","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":"\u003cimg src\u003d\"images/yixianggg.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":"[[github](http://github.com/yixianggg)] ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":"### Benjamin Lim","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":"\u003cimg src\u003d\"images/benjibase.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":"[[github](http://github.com/benjiBase)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":"### Chong Xin Wei","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":"\u003cimg src\u003d\"images/xinweichong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":"[[github](http://github.com/xinweichong)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"benjiBase":5,"gavinsoh":12,"xinweichong":2,"-":41,"yixianggg":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"xinweichong"},"content":"* nurse in the healthcare industry managing patients","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"xinweichong"},"content":"* has many patients across different wards with varying care levels","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"xinweichong"},"content":"* Mainly done in desktop app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"xinweichong"},"content":"* Used to typing to fill out user information","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"xinweichong"},"content":"* is comfortable using CLI","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"xinweichong"},"content":"**Value proposition**: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"xinweichong"},"content":"provides a patient management system for nurses to use which is faster than GUI/mouse driven apps","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"jarrellc1"},"content":"|----------|---------|-----------------------------------------|--------------------------------------|","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | add in emergency contact numbers | refer to them during an emergency |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | delete emergency contact numbers | remove irrelevant emergency contacts |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | update a patient’s category | reflect changes in their care status |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | assign multiple categories to a patient | quickly identify the care level |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | add tasks | track what task needs to be done |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jarrellc1"},"content":"| `* * *` | nurse | delete tasks | remove irrelevant tasks |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"jarrellc1"},"content":"(For all use cases below, the **System** is the `NovaCare` and the **Actor** is the `nurses`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"jarrellc1"},"content":"**Use case: UC01 - Add Task**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"jarrellc1"},"content":"1. User chooses to add a new task.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"jarrellc1"},"content":"2. NovaCare asks for a patient ID and description of the task.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"jarrellc1"},"content":"3. User inputs the requested information.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"jarrellc1"},"content":"4. NovaCare outputs message showing successful task creation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"jarrellc1"},"content":"* 3a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"jarrellc1"},"content":"* 3a. NovaCare detects an invalid patient ID.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"jarrellc1"},"content":" * 3a1. NovaCare requests for valid patient ID.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"jarrellc1"},"content":" * 3a2. User enters a new patient ID and description of the task.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"jarrellc1"},"content":" Steps 3a1-3a2 are repeated until the data entered is correct.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"jarrellc1"},"content":" Use case resumes at step 2 if patient details are re-entered.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"jarrellc1"},"content":"**Use case: UC02 - Delete Emergency contact number**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"jarrellc1"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"jarrellc1"},"content":"1. Nurse chooses to delete an emergency contact number for a patient.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"jarrellc1"},"content":"2. NovaCare requests the patient\u0027s details to identify the patient.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"jarrellc1"},"content":"3. NovaCare displays the list of current emergency contacts for the patient.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"jarrellc1"},"content":"4. Nurse selects the contact to delete.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"jarrellc1"},"content":"5. NovaCare requests confirmation from the nurse to delete the selected contact.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"jarrellc1"},"content":"6. Nurse confirms the deletion.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"jarrellc1"},"content":"7. NovaCare deletes the selected emergency contact and displays a confirmation message with the updated emergency contact list.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"jarrellc1"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"jarrellc1"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"jarrellc1"},"content":"* 3a. The list is empty.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"jarrellc1"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"jarrellc1"},"content":"* 3a. NovaCare detects that the patient does not exist.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"jarrellc1"},"content":" * 3a1. NovaCare notifies the nurse that the patient does not exist.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"jarrellc1"},"content":" * 3a2. Nurse either re-enters the correct patient details or cancels the operation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"jarrellc1"},"content":" Use case resumes at step 2 if patient details are re-entered.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":367,"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","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"jarrellc1"},"content":"4. The GUI should work well for standard screen resolutions 1920x1080 and higher, and for screen scales 100% and 125%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"jarrellc1"},"content":"5. The codebase should be modular, allowing easy updates or feature additions without affecting other parts of the system.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"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","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":401,"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","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":415,"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","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"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","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"jarrellc1":52,"xinweichong":7,"-":372}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jarrellc1"},"content":"Deletes the specified person and tasks associated to that person from the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jarrellc1"},"content":"* Deletes the person and task associated to that person at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jarrellc1"},"content":"* `find john doe` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jarrellc1"},"content":"### Adding a task : `addtask`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jarrellc1"},"content":"Adds a task to a person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jarrellc1"},"content":"Format: `addtask INDEX d/DESCRIPTION`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jarrellc1"},"content":"* Adds a task at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jarrellc1"},"content":"* `list` followed by `addtask 2 d/Eat paracetamol 1000mg` adds a task to the 2nd person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"jarrellc1"},"content":"* `find John doe` followed by `addtask 1 d/Clear diapers` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"jarrellc1"},"content":"![Person List](images/PersonListExample.png)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jarrellc1"},"content":"![Task List](images/TaskListExample.png)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jarrellc1"},"content":"### Deleting a task : `deletetask`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jarrellc1"},"content":"Deletes a task to a person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jarrellc1"},"content":"Format: `deletetask INDEX`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jarrellc1"},"content":"* Deletes a task at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jarrellc1"},"content":"* `deletetask 1` deletes the 1st task in the task list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"jarrellc1"},"content":"### Adding emergency contact : `emergency`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"jarrellc1"},"content":"Adds an emergency contact and details to a person in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jarrellc1"},"content":"Format: `emergency INDEX n/EMERGENCY_CONTACT_NAME p/EMERGENCY_CONTACT_NUMBER`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jarrellc1"},"content":"* Adds an emergency contact and details at the specified `INDEX`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jarrellc1"},"content":"* `emergency 1 n/tom tan p/91237171` adds an emergency contact `tom tan` with contact number `91237171` to 1st index in person list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"jarrellc1"},"content":"### Adding priority level : `priority`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jarrellc1"},"content":"Adds an priority level to a person in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"jarrellc1"},"content":"Format: `priority /id INDEX /level PRIORITY_LEVEL`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jarrellc1"},"content":"* Adds a priority level at the specified `INDEX`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jarrellc1"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"jarrellc1"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"jarrellc1"},"content":"* The priority level **must be a positive integer** and only from **1, 2, 3**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jarrellc1"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jarrellc1"},"content":"* `priotity /id 1 /level 2` adds priority level `2` to 1st index in person list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"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","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":222,"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","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"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","isFullCredit":false},{"lineNumber":228,"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","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"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","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":246,"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","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"jarrellc1"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"jarrellc1"},"content":"|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"jarrellc1"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"jarrellc1"},"content":"| **Add Task** | `addtask INDEX d/TASK_DESCRIPTION` \u003cbr\u003e e.g., `addtask 1 d/Eat paracetamol 1000mg` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"jarrellc1"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"jarrellc1"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"jarrellc1"},"content":"| **Delete Task** | `deletetask INDEX`\u003cbr\u003e e.g., `deletetask 3` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"jarrellc1"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"jarrellc1"},"content":"| **Emergency Contact** | `emergency INDEX n/EMERGENCY_CONTACT_NAME p/EMERGENCY_CONTACT_NUMBER`\u003cbr\u003e e.g., `emergency 3 n/Tom Tan p/97151717` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"jarrellc1"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"jarrellc1"},"content":"| **List** | `list` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"jarrellc1"},"content":"| **Priority** | `priority /id INDEX /level PRIORITY_LEVEL` \u003cbr\u003e e.g., `priority /id 1 /level 2` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"jarrellc1"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"jarrellc1":72,"-":194}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"jarrellc1":3,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jarrellc1"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jarrellc1"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jarrellc1"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jarrellc1":6,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_NONEXISTENT_PERSON \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" \"The person \u0027%1$s\u0027 does not exist in the system!\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"benjiBase":3,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to the task list. \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" + \"Parameters: INDEX d/DESCRIPTION\\n\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 d/Buy medication\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" private final String taskDescription;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" private final Index target;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" * Creates an AddTaskCommand to add the specified {@code Task} and associate it with {@code Person}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" public AddTaskCommand(Index target, String taskDescription) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" requireNonNull(taskDescription);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" this.target \u003d target;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" if (target.getZeroBased() \u003e\u003d model.getFilteredPersonList().size()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" throw new CommandException(MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" Person patient \u003d model.getFilteredPersonList().get(target.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" Task taskToAdd \u003d new Task(patient, taskDescription);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" if (model.hasTask(taskToAdd)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" model.addTask(taskToAdd);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, taskToAdd.getDescription()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":" return taskDescription.equals(otherAddTaskCommand.taskDescription)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" \u0026\u0026 target.equals(otherAddTaskCommand.target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":73}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" model.deleteAssociatedTasks(personToDelete);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"benjiBase":1,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/DeleteEmergencyContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import java.util.List;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" * Deletes the emergency contact of an existing patient in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":"public class DeleteEmergencyContactCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" public static final String COMMAND_WORD \u003d \"delemergency\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" + \": Deletes the emergency contact details of the person identified \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" + \"by the index number used in the last person listing.\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS \u003d \"Removed emergency contact from Person: %1$s\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_NO_EMERGENCY_CONTACT \u003d \"Person: %1$s Does not have a saved emergency contact\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" private final Index index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" * @param index of the person in the filtered person list to delete the emergency contact details","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" public DeleteEmergencyContactCommand(Index index) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" requireAllNonNull(index);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" if (personToEdit.getEmergencyContact() \u003d\u003d null","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" || (personToEdit.getEmergencyContact().contactName.isEmpty()","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 personToEdit.getEmergencyContact().contactNumber.isEmpty())) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" throw new CommandException(generateNoEmergencyContactMessage(personToEdit));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" personToEdit.getAddress(), new EmergencyContact(\"\", \"\"),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" personToEdit.getTags(), personToEdit.getPriorityLevel());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yixianggg"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yixianggg"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" * Generates a command execution success message based on whether the emergency contact is deleted","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yixianggg"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yixianggg"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yixianggg"},"content":" return String.format(MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS, personToEdit);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" private String generateNoEmergencyContactMessage(Person personToEdit) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yixianggg"},"content":" return String.format(MESSAGE_NO_EMERGENCY_CONTACT, personToEdit);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yixianggg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yixianggg"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yixianggg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" return true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" if (!(other instanceof DeleteEmergencyContactCommand)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":" // state check","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand e \u003d (DeleteEmergencyContactCommand) other;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" return index.equals(e.index);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"yixianggg":85}},{"path":"src/main/java/seedu/address/logic/commands/DeletePriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":" * Deletes the priority level of an existing person in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"public class DeletePriorityCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" public static final String COMMAND_WORD \u003d \"deletelevel\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Resets the priority level for a patient identified by \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" + \"the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" private final int index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" * Constructs a new {@code DeletePriorityCommand} with the specified index.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" * @param index the index of the person in the list whose priority level will be reset.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" public DeletePriorityCommand(int index) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" * Executes the deletion of the priority level on the specified person in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" * @param model the model in which the person will be updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" * @return a command result that includes a success message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" * @throws CommandException if the index provided is out of bounds.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(index - 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getName(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getPhone(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getEmail(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getAddress(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getEmergencyContact(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getTags(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" new PriorityLevel(3)); // reset to default priority level","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" return new CommandResult(String.format(\"Priority level reset to default for %s\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" editedPerson.getName()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" throw new CommandException(\"Invalid patient ID. Please enter a valid patient identifier.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" * Compares this object with another for equality, based on index.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" * @param other the object to compare this command against.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" * @return true if both objects have the same data fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" return true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand that \u003d (DeletePriorityCommand) other;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" return index \u003d\u003d that.index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"gavinsoh":76}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" * Deletes a task identified using it\u0027s displayed index from the task list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" + \": Deletes the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted Task: %1$s for %2$s\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" public DeleteTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" Task taskToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, taskToDelete.getDescription(),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" taskToDelete.getPatient().getName()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" public String toString() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" .toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" // edit command does not allow editing emergency contacts","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" EmergencyContact updatedEmergencyContact \u003d personToEdit.getEmergencyContact();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel updatedPriorityLevel \u003d editPersonDescriptor.getPriorityLevel()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"gavinsoh"},"content":" .orElse(personToEdit.getPriorityLevel());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"gavinsoh"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedEmergencyContact,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"gavinsoh"},"content":" updatedTags, updatedPriorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"gavinsoh"},"content":" private PriorityLevel priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"gavinsoh"},"content":" setPriorityLevel(toCopy.priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"gavinsoh"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"gavinsoh"},"content":" public void setPriorityLevel(PriorityLevel priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"gavinsoh"},"content":" public Optional\u003cPriorityLevel\u003e getPriorityLevel() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"gavinsoh"},"content":" return Optional.ofNullable(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 Objects.equals(priorityLevel, otherEditPersonDescriptor.priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"gavinsoh"},"content":" .add(\"priorityLevel\", priorityLevel)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"jarrellc1":1,"gavinsoh":22,"-":239}},{"path":"src/main/java/seedu/address/logic/commands/EmergencyContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import java.util.List;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" * Changes the emergency contact of an existing person in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommand extends Command {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" public static final String COMMAND_WORD \u003d \"emergency\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" + \": Edits the emergency contact details of the person identified \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" + \"by the index number used in the last person listing.\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" + PREFIX_NAME + \"[EMERGENCY CONTACT NAME]\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + \"[EMERGENCY CONTACT NUMBER\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" + PREFIX_NAME + \"Richard Ng \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + \"82943718\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS \u003d \"Added emergency contact to Person: %1$s\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" public static final String MESSAGE_EMERGENCY_CONTACT_EXISTS \u003d \"Person: %1$s Already has a saved emergency contact\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" private final Index index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" private final EmergencyContact emergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" * @param index of the person in the filtered person list to add the emergency contact details","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" * @param emergencyContact of the person to be updated to","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" public EmergencyContactCommand(Index index, EmergencyContact emergencyContact) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" requireAllNonNull(index, emergencyContact);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" this.emergencyContact \u003d emergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yixianggg"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yixianggg"},"content":" if (personToEdit.getEmergencyContact() !\u003d null","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 !personToEdit.getEmergencyContact().contactName.isEmpty()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 !personToEdit.getEmergencyContact().contactNumber.isEmpty()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" throw new CommandException(generateEmergencyContactExistsMessage(personToEdit));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yixianggg"},"content":" personToEdit.getAddress(), emergencyContact, personToEdit.getTags(), personToEdit.getPriorityLevel());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yixianggg"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yixianggg"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" * Generates a command execution success message based on whether the emergency contact is added","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yixianggg"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yixianggg"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yixianggg"},"content":" return String.format(MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS, personToEdit);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" private String generateEmergencyContactExistsMessage(Person personToEdit) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" return String.format(MESSAGE_EMERGENCY_CONTACT_EXISTS, personToEdit);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yixianggg"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yixianggg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yixianggg"},"content":" if (!(other instanceof EmergencyContactCommand)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yixianggg"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yixianggg"},"content":" // state check","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand e \u003d (EmergencyContactCommand) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 emergencyContact.getName().equals(e.emergencyContact.getName())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 emergencyContact.getNumber().equals(e.emergencyContact.getNumber());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":97}},{"path":"src/main/java/seedu/address/logic/commands/MarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import java.util.List;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" * Marks a task identified using it\u0027s displayed index from the task list as complete.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" public static final String COMMAND_WORD \u003d \"marktask\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" + \": Marks the task identified by the index number used in the displayed task list as complete.\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Marked task as complete: %1$s for %2$s\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" public MarkTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" taskToMark.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, taskToMark.getDescription(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" taskToMark.getPatient().getName()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" if (!(other instanceof MarkTaskCommand)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand otherMarkTaskCommand \u003d (MarkTaskCommand) other;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" return targetIndex.equals(otherMarkTaskCommand.targetIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" public String toString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" .toString();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":70}},{"path":"src/main/java/seedu/address/logic/commands/PriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":" * Changes the priority level of an existing person in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"public class PriorityCommand extends Command {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" public static final String COMMAND_WORD \u003d \"priority\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sets the priority level for a patient identified by \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" + \"the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" + \"Parameters: id INDEX (must be a positive integer) /level LEVEL (must be 1, 2, or 3)\\n\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" + \"Parameters: deletelevel INDEX or INDEX /level LEVEL\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" + \"Example: priority deletelevel 1\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" + \"Example: \" + COMMAND_WORD + \" /id 1 /level 2\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" private final int index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" private final int priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" private final boolean isReset;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" * Constructs a new {@code PriorityCommand} with the specified index and priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" * @param index the index of the person in the list to which the priority level will be assigned.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel the priority level to be assigned to the person.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" * This should be a valid priority level as per the application\u0027s standards.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" public PriorityCommand(int index, int priorityLevel, boolean isReset) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" this.isReset \u003d isReset;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" * Executes the priority level update on the specified person in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" * @param model the model in which the person will be updated.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" * @return a command result that includes a success message.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" * @throws CommandException if the index provided is out of bounds or the priority level is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(index - 1);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getName(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getPhone(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getEmail(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getAddress(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getEmergencyContact(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" personToEdit.getTags(),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" new PriorityLevel(isReset ? 3 : priorityLevel));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" return new CommandResult(String.format(\"Priority level %d successfully set for %s\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" priorityLevel, editedPerson.getName()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" throw new CommandException(\"Invalid patient ID. Please enter a valid patient identifier.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" throw new CommandException(\"Invalid priority level. Please enter 1/2/3 as the priority level.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" * Compares this object with another for equality, based on index and priority level.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" * @param other the object to compare this command against.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" * @return true if both objects have the same data fields.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"gavinsoh"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"gavinsoh"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"gavinsoh"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand that \u003d (PriorityCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"gavinsoh"},"content":" return index \u003d\u003d that.index \u0026\u0026 priorityLevel \u003d\u003d that.priorityLevel \u0026\u0026 isReset \u003d\u003d that.isReset;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"gavinsoh":84}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" PREFIX_PRIORITY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" // add command does not allow adding remarks straight away","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" EmergencyContact emergencyContact \u003d new EmergencyContact(\"\", \"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" // set default prioritylevel as 3","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel priorityLevel \u003d ParserUtil.parsePriorityLevel(argMultimap.getValue(PREFIX_PRIORITY).orElse(\"3\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" Person person \u003d new Person(name, phone, email, address, emergencyContact, tagList, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":10,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":" * Parses input arguments and creates a new AddTaskCommand object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" * Parses the given {@code String} of arguments in the context of the AddTaskCommand","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" * and returns an AddTaskCommand object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TASK_DESCRIPTION);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" Index index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" try {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" if (!argMultimap.getValue(PREFIX_TASK_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" String taskDescription \u003d argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" return new AddTaskCommand(index, taskDescription);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":44}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.DeleteEmergencyContactCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.DeletePriorityCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" case EmergencyContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":" return new EmergencyContactCommandParser().parse(arguments);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":" case DeleteEmergencyContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":" return new DeleteEmergencyContactCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"benjiBase"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"benjiBase"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"benjiBase"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"gavinsoh"},"content":" case PriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"gavinsoh"},"content":" return new PriorityCommandParser().parse(arguments);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" return new MarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" case DeletePriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" return new DeletePriorityCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"benjiBase":8,"gavinsoh":8,"xinweichong":4,"-":86,"yixianggg":8}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":" /* Prefix definitions for person-related data */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public static final Prefix PREFIX_PRIORITY \u003d new Prefix(\"l/\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" /* Prefix definitions for task-related data */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"benjiBase":3,"gavinsoh":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteEmergencyContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.DeleteEmergencyContactCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":" * Parses input arguments and creates a new {@code DeleteEmergencyContactCommand} object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"public class DeleteEmergencyContactCommandParser implements Parser\u003cDeleteEmergencyContactCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteEmergencyContactCommand}","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" * and returns a {@code DeleteEmergencyContactCommand} object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" public DeleteEmergencyContactCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" Index index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" return new DeleteEmergencyContactCommand(index);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"yixianggg":32}},{"path":"src/main/java/seedu/address/logic/parser/DeletePriorityCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.DeletePriorityCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" * Parses input arguments for the {@code DeletePriorityCommand}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":" * This class is responsible for interpreting the user\u0027s input when they attempt to delete the priority","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" * level of a person in the address book. It validates the input format and extracts the necessary","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" * information to create a {@code DeletePriorityCommand}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" * \u003c/p\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"public class DeletePriorityCommandParser implements Parser\u003cDeletePriorityCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" * Parses the given arguments and creates a new {@code DeletePriorityCommand} object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" * This method processes the input string, extracting the index of the person whose priority level","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" * is to be deleted. The index is parsed and validated to ensure it is a valid positive integer.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" * \u003c/p\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" * @param args The input arguments provided by the user, typically containing the index of the person.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" * @return A {@code DeletePriorityCommand} object containing the parsed index.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" * @throws ParseException If the input is invalid or the index cannot be parsed. This may include scenarios","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" * where the index is not a valid positive integer or if the input format is incorrect.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" public DeletePriorityCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" Index index \u003d ParserUtil.parseIndex(args.trim());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" return new DeletePriorityCommand(index.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"gavinsoh":41}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" try {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"benjiBase":29}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" PREFIX_PRIORITY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" if (argMultimap.getValue(PREFIX_PRIORITY).isPresent()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" editPersonDescriptor.setPriorityLevel(ParserUtil.parsePriorityLevel(argMultimap","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" .getValue(PREFIX_PRIORITY).get()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"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","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"gavinsoh":9,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/EmergencyContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":" * Parses input arguments and creates a new {@code EmergencyContactCommand} object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommandParser implements Parser\u003cEmergencyContactCommand\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" * Parses the given {@code String} of arguments in the context of the {@code EmergencyContactCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" * and returns a {@code EmergencyContactCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" public EmergencyContactCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" Index index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" String contactName \u003d argMultimap.getValue(PREFIX_NAME).orElse(\"\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" String contactNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" return new EmergencyContactCommand(index, new EmergencyContact(contactName, contactNumber));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":37}},{"path":"src/main/java/seedu/address/logic/parser/MarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":" * Parses input arguments and creates a new MarkTaskCommand object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommandParser implements Parser\u003cMarkTaskCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" * Parses the given {@code String} of arguments in the context of the MarkTaskCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" * and returns a MarkTaskCommand object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" public MarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":28}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"gavinsoh"},"content":" * Parses a {@code String priorityLevel} into a {@code PriorityLevel}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"gavinsoh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel The string to parse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"gavinsoh"},"content":" * @return The parsed PriorityLevel object.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"gavinsoh"},"content":" * @throws ParseException if the given {@code priorityLevel} is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"gavinsoh"},"content":" public static PriorityLevel parsePriorityLevel(String priorityLevel) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"gavinsoh"},"content":" requireNonNull(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"gavinsoh"},"content":" String trimmedPriorityLevel \u003d priorityLevel.trim();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"gavinsoh"},"content":" if (trimmedPriorityLevel.isEmpty() || trimmedPriorityLevel.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"gavinsoh"},"content":" return new PriorityLevel(3); // default level if none provided or \"delete\" keyword used","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"gavinsoh"},"content":" if (trimmedPriorityLevel.isEmpty()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"gavinsoh"},"content":" return new PriorityLevel(3); // default level if none provided","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"gavinsoh"},"content":" int level;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"gavinsoh"},"content":" level \u003d Integer.parseInt(trimmedPriorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"gavinsoh"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"gavinsoh"},"content":" throw new ParseException(\"Priority level must be a number.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"gavinsoh"},"content":" if (level \u003c 1 || level \u003e 3) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"gavinsoh"},"content":" throw new ParseException(\"Invalid priority level. Please enter 1, 2, or 3.\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"gavinsoh"},"content":" return new PriorityLevel(level);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"gavinsoh"},"content":" * Parses a {@code String argument} to determine if it indicates a command to delete the priority level.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"gavinsoh"},"content":" * If the argument is \"delete\", it returns a default PriorityLevel of 3.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"gavinsoh"},"content":" * @param argument The string argument to parse.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"gavinsoh"},"content":" * @return The PriorityLevel of 3 if the argument indicates deletion.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"gavinsoh"},"content":" * @throws ParseException if the argument is not \"delete\" or a valid priority level.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"gavinsoh"},"content":" public static PriorityLevel parseDeletePriorityLevel(String argument) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"gavinsoh"},"content":" requireNonNull(argument);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"gavinsoh"},"content":" String trimmedArgument \u003d argument.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"gavinsoh"},"content":" if (trimmedArgument.equalsIgnoreCase(\"deletelevel\")) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"gavinsoh"},"content":" return new PriorityLevel(3); // default priority level upon deletion","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"gavinsoh"},"content":" throw new ParseException(\"Invalid argument for deleting priority level. Expected \u0027deletelevel\u0027.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"gavinsoh":53,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/PriorityCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":" * Parses input arguments and creates a new PriorityCommand object","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"public class PriorityCommandParser implements Parser\u003cPriorityCommand\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" public PriorityCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" try {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" String[] splitArgs \u003d args.trim().split(\"\\\\s+\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" int id \u003d Integer.parseInt(splitArgs[1]);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" if (splitArgs[0].equalsIgnoreCase(\"deletelevel\")) { // check if command is deletelevel","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" return new PriorityCommand(id, 3, true); // handle delete/reset to default level","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" } else {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" int level \u003d Integer.parseInt(splitArgs[3]);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" return new PriorityCommand(id, level, false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"gavinsoh":25,"xinweichong":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.UniqueTaskList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" private final UniqueTaskList tasks;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" tasks \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" * Replaces the contents of the task list with {@code tasks}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" this.tasks.setTasks(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" setTasks(newData.getTaskList());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" //// task-level operations","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" * Returns true if a task with the same identity as {@code task} exists in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" return tasks.contains(task);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" * Adds a task to the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" * The task must not already exist in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" tasks.add(task);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" * Replaces the given task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" * The {@code editedTask} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" requireNonNull(editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" tasks.setTask(target, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" public void removeTask(Task key) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" tasks.remove(key);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":131,"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"xinweichong"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"xinweichong"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"xinweichong"},"content":" return tasks.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"xinweichong"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"xinweichong"},"content":" \u0026\u0026 tasks.equals(otherAddressBook.tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"xinweichong":58,"-":129}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" * Returns true if a task with the same identity as {@code task} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"benjiBase"},"content":" * Deletes task from the list of a person.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"benjiBase"},"content":" void deleteTask(Task task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":" * Deletes all tasks associated with the given person.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" void deleteAssociatedTasks(Person target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"benjiBase"},"content":" * Adds the given task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" * {@code task} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":" void addTask(Task task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"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","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":" /** Returns an unmodifiable view of the task list */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"gavinsoh"},"content":" * Resets the priority level of the specified person to the default level.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"gavinsoh"},"content":" * @param target The person whose priority level is to be reset.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":" void resetPersonPriority(Person target);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"benjiBase":34,"gavinsoh":6,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.addressBook.getTaskList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" return addressBook.hasTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":" addressBook.removeTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks(Person personToDelete) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":" List\u003cTask\u003e allTasks \u003d getFilteredTaskList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" // Create a new list to store tasks to be deleted","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" List\u003cTask\u003e tasksToDelete \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":" for (Task task : allTasks) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" if (task.getPatient().equals(personToDelete)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" tasksToDelete.add(task);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" // Delete all tasks associated with the person","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":" for (Task task : tasksToDelete) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" deleteTask(task);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" addressBook.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"benjiBase"},"content":" return filteredTasks;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"benjiBase"},"content":" requireAllNonNull(predicate);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"benjiBase"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority(Person target) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"gavinsoh"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"gavinsoh"},"content":" Person resetPerson \u003d new Person(target.getName(), target.getPhone(), target.getEmail(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"gavinsoh"},"content":" target.getAddress(), target.getEmergencyContact(), target.getTags(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"gavinsoh"},"content":" new PriorityLevel(3));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"gavinsoh"},"content":" setPerson(target, resetPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"benjiBase":52,"gavinsoh":10,"-":148}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" ObservableList\u003cTask\u003e getTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"xinweichong":2,"-":17}},{"path":"src/main/java/seedu/address/model/person/EmergencyContact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":" * Represents a Person\u0027s emergency contact in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContact {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":" public final String contactName;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":" public final String contactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":" * Constructs a {@code EmergencyContact}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" * @param contactName A valid name.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" * @param contactNumber A valid number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" public EmergencyContact(String contactName, String contactNumber) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" requireNonNull(contactName);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" requireNonNull(contactNumber);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" public String getName() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" return this.contactName;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" public String getNumber() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" return this.contactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" if (contactName.isEmpty() || contactNumber.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" return \"No Emergency Contact\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" return \"Emergency Contact: \" + contactName + \", \" + contactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" || (other instanceof EmergencyContact // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 contactName.equals(((EmergencyContact) other).contactName)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" \u0026\u0026 contactNumber.equals(((EmergencyContact) other).contactNumber)); // state check","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" return (contactName + \": \" + contactNumber).hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":51}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" private final EmergencyContact emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" private final PriorityLevel priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" public Person(Name name, Phone phone, Email email, Address address, EmergencyContact emergencyContact,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" Set\u003cTag\u003e tags, PriorityLevel priorityLevel) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" requireAllNonNull(name, phone, email, address, tags, priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" this.emergencyContact \u003d emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" public EmergencyContact getEmergencyContact() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" return emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" public PriorityLevel getPriorityLevel() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" return priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"gavinsoh"},"content":" \u0026\u0026 priorityLevel.equals(otherPerson.priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"gavinsoh"},"content":" return Objects.hash(name, phone, email, address, tags, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"gavinsoh"},"content":" .add(\"emergency contact\", emergencyContact)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"gavinsoh"},"content":" .add(\"priorityLevel\", priorityLevel)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"gavinsoh":20,"-":113}},{"path":"src/main/java/seedu/address/model/person/PriorityLevel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":" * Represents a Person\u0027s priority level in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":" * Guarantees: immutable; is always valid as it is checked during construction.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"public class PriorityLevel {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Priority level must be 1, 2, or 3.\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":" private final int value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" * Constructs a {@code PriorityLevel}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" * @param value A valid priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" public PriorityLevel(int value) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" requireNonNull(value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" if (!isValidPriorityLevel(value)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" throw new IllegalArgumentException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" this.value \u003d value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" * Returns true if a given integer is a valid priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" public static boolean isValidPriorityLevel(int test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" return test \u003e\u003d 1 \u0026\u0026 test \u003c\u003d 3;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" public int getValue() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" return String.valueOf(value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" if (!(other instanceof PriorityLevel)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel that \u003d (PriorityLevel) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" return value \u003d\u003d that.value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" return Integer.hashCode(value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"gavinsoh":58}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import javafx.beans.property.SimpleBooleanProperty;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":" * Represents a Task in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"public class Task {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" private final Person patient;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" private final String description;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" private final SimpleBooleanProperty isComplete;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" public Task(Person patient, String description) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(patient, description);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" this.isComplete \u003d new SimpleBooleanProperty(false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" public Task(Person patient, String description, boolean isComplete) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(patient, description, isComplete);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" this.isComplete \u003d new SimpleBooleanProperty(isComplete);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" public Person getPatient() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" return patient;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" public String getDescription() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" return description;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" return this.isComplete.getValue();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" public SimpleBooleanProperty isCompleteProperty() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" return isComplete;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" public String getStatusString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" return this.getStatus() ? \"Complete\" : \"Incomplete\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" public void markTaskComplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" this.isComplete.set(true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" return patient.equals(otherTask.patient)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" \u0026\u0026 description.equals(otherTask.description);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" return Objects.hash(patient, description);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" .add(\"patient\", patient)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" .add(\"status\", getStatusString())","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":98}},{"path":"src/main/java/seedu/address/model/task/UniqueTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" * A list of tasks that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" * A task is considered unique by comparing using {@code String#equals(Object)}. As such, adding and updating of","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" * tasks uses {@code String#equals(Object)} for equality so as to ensure that the task being added or updated is","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" * unique in terms of identity in the UniqueTaskList.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":"public class UniqueTaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" private final ObservableList\u003cTask\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" private final ObservableList\u003cTask\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" * Returns true if the list contains an equivalent task as the given argument.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" public boolean contains(Task toCheck) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" * The task must not already exist in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" public void add(Task toAdd) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" * Replaces the task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" * The task identity of {@code editedTask} must not be the same as another existing task in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" if (!target.equals(editedTask) \u0026\u0026 contains(editedTask)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" internalList.set(index, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" * Removes the equivalent task from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" * The task must exist in the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" public void remove(Task toRemove) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" public void setTasks(UniqueTaskList replacement) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" * Replaces the contents of this list with {@code tasks}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" * {@code tasks} must not contain duplicate tasks.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" requireAllNonNull(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" if (!tasksAreUnique(tasks)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" throw new DuplicateTaskException();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" internalList.setAll(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" public ObservableList\u003cTask\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" if (!(other instanceof UniqueTaskList)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList otherUniqueTaskList \u003d (UniqueTaskList) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" return internalList.equals(otherUniqueTaskList.internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"xinweichong"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":" * Returns true if {@code tasks} contains only unique tasks.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"xinweichong"},"content":" private boolean tasksAreUnique(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"xinweichong"},"content":" for (int i \u003d 0; i \u003c tasks.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"xinweichong"},"content":" for (int j \u003d i + 1; j \u003c tasks.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"xinweichong"},"content":" if (tasks.get(i).equals(tasks.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"xinweichong"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"xinweichong"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":145}},{"path":"src/main/java/seedu/address/model/task/exceptions/DuplicateTaskException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":" * Signals that the operation will result in duplicate Tasks (Tasks are considered duplicates if they have the same","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":" * description and patient)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"public class DuplicateTaskException extends RuntimeException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":" public DuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":" super(\"Operation would result in duplicate tasks\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":11}},{"path":"src/main/java/seedu/address/model/task/exceptions/TaskNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":" * Signals that the operation is unable to find the specified task.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"public class TaskNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" public static final EmergencyContact EMPTY_EMERGENCY_CONTACT \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" new EmergencyContact(\"\", \"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"friends\"), new PriorityLevel(1)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"colleagues\", \"friends\"), new PriorityLevel(2)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"neighbours\"), new PriorityLevel(3)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"family\"), new PriorityLevel(1)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"classmates\"), new PriorityLevel(2)),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), EMPTY_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" getTagSet(\"colleagues\"), new PriorityLevel(1))","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"gavinsoh":16,"-":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" private final String emergencyContactName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" private final String emergencyContactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" private final int priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" @JsonProperty(\"emergency contact name\") String emergencyContactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" @JsonProperty(\"emergency contact number\") String emergencyContactNumber,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" @JsonProperty(\"tagged\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" @JsonProperty(\"priorityLevel\") int priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" this.emergencyContactName \u003d emergencyContactName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" this.emergencyContactNumber \u003d emergencyContactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" emergencyContactName \u003d source.getEmergencyContact().contactName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" emergencyContactNumber \u003d source.getEmergencyContact().contactNumber;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" priorityLevel \u003d source.getPriorityLevel().getValue();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yixianggg"},"content":" if (emergencyContactName \u003d\u003d null || emergencyContactNumber \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yixianggg"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yixianggg"},"content":" EmergencyContact.class.getSimpleName()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yixianggg"},"content":" final EmergencyContact modelEmergencyContact \u003d new EmergencyContact(emergencyContactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yixianggg"},"content":" emergencyContactNumber);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"gavinsoh"},"content":" final PriorityLevel modelPriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"gavinsoh"},"content":" if (priorityLevel \u003d\u003d 0) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"gavinsoh"},"content":" modelPriorityLevel \u003d new PriorityLevel(3); // default priority level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"gavinsoh"},"content":" } else if (priorityLevel \u003e\u003d 1 \u0026\u0026 priorityLevel \u003c\u003d 3) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"gavinsoh"},"content":" modelPriorityLevel \u003d new PriorityLevel(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"gavinsoh"},"content":" } else {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"gavinsoh"},"content":" throw new IllegalValueException(PriorityLevel.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"gavinsoh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"gavinsoh"},"content":" modelEmergencyContact, modelTags, modelPriorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"jarrellc1":1,"gavinsoh":21,"-":107,"yixianggg":14}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"class JsonAdaptedTask {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" private final String description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" private final JsonAdaptedPerson patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" * Constructs a {@code JsonAdaptedTask} with the given task details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" public JsonAdaptedTask(@JsonProperty(\"description\") String description,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" @JsonProperty(\"patient\") JsonAdaptedPerson patient) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" description \u003d source.getDescription();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" patient \u003d new JsonAdaptedPerson(source.getPatient());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" if (this.description \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Description\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" if (this.patient \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Patient\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" if (this.description.trim().isEmpty()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(\"Task\u0027s description cannot be empty!\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jarrellc1"},"content":" Person modelPatient \u003d this.patient.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jarrellc1"},"content":" return new Task(modelPatient, description);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Tasks list contains duplicate task(s).\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons and tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" @JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" tasks.addAll(source.getTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jarrellc1"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jarrellc1"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jarrellc1"},"content":" if (addressBook.hasTask(task)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jarrellc1"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jarrellc1"},"content":" addressBook.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"jarrellc1":20,"-":59}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import java.awt.Desktop;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import java.net.URI;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import java.net.URISyntaxException;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import javafx.scene.control.Hyperlink;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2425s1-cs2103t-f15-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide:\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" private static final String HELP_COMMAND \u003d getAllCommands();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" @FXML","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" private Label helpCommands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" @FXML","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" private Hyperlink userGuideLink;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" * Creates a new HelpWindow. The HelpWindow will be set at","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" * foreground of the MainWindow until closed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" public HelpWindow(Stage root, Stage mainStage) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" root.setAlwaysOnTop(true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" helpCommands.setText(HELP_COMMAND);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" userGuideLink.setOnAction(event -\u003e openUserGuide());","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" mainStage.focusedProperty().addListener((obs, wasFocused, isNowFocused) -\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" if (isNowFocused) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" root.setAlwaysOnTop(true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" } else {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" root.setAlwaysOnTop(false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":" });","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":" public HelpWindow(Stage mainStage) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" this(new Stage(), mainStage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" * Returns the list of all commands.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":" public static String getAllCommands() {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" return \"Here are the list of commands available:\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" + \"1. add\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" + \"2. delete\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":" + \"3. addtask\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":" + \"4. deletetask\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" + \"5. emergency\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" + \"6. priority\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" + \"7. list\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" + \"8. help\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" + \"9. exit\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" + \"10. find\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":" + \"11. clear\\n\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":" * Opens the user guide in the default browser.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"benjiBase"},"content":" private void openUserGuide() {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"benjiBase"},"content":" try {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"benjiBase"},"content":" Desktop.getDesktop().browse(new URI(USERGUIDE_URL));","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"benjiBase"},"content":" } catch (IOException | URISyntaxException e) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":" logger.warning(\"Failed to open user guide: \" + e.getMessage());","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"benjiBase":61,"-":95}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jarrellc1"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" helpWindow \u003d new HelpWindow(primaryStage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jarrellc1"},"content":" TaskListPanel taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jarrellc1"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"jarrellc1":6,"benjiBase":1,"-":195}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" private Label emergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" private Label priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" emergencyContact.setText(person.getEmergencyContact().toString());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" priorityLevel.setText(\"Priority: \" + person.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jarrellc1":1,"gavinsoh":4,"-":59,"yixianggg":3}},{"path":"src/main/java/seedu/address/ui/TaskListCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import javafx.beans.binding.Bindings;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import javafx.beans.binding.StringBinding;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * An UI component that displays information of a {@code Task}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class TaskListCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" public final Task task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" private Label id;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" private Label description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" private Label patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" @FXML","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" private Label status;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" * Creates a {@code TaskListCard} with the given {@code Task} and index to display.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" public TaskListCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" super(FXML);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" this.task \u003d task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" description.setText(task.getDescription());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" patient.setText(task.getPatient().getName().fullName);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" StringBinding statusBinding \u003d Bindings.createStringBinding(() -\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" task.getStatusString(), task.isCompleteProperty());","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" status.textProperty().bind(statusBinding);","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":36,"xinweichong":3,"yixianggg":6}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * Panel containing the list of tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" @FXML","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" * Creates a {@code TaskListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" super(FXML);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Task} using a {@code TaskListCard}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" setText(null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" setGraphic(new TaskListCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":44}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"#copyButton, #helpMessage, #userGuideLink, #helpCommands {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-background-color: gray;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"#helpMessage, #userGuideLink, #helpCommands {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"#userGuideLink {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" -fx-focus-color: transparent;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" -fx-underline: true;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-17","isFullCredit":false}],"authorContributionMap":{"benjiBase":10,"-":18}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"\u003c?import javafx.scene.control.Hyperlink?\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":14,"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" \u003cVBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"/\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" \u003cHyperlink fx:id\u003d\"userGuideLink\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" text\u003d\"https://ay2425s1-cs2103t-f15-1.github.io/tp/UserGuide.html(Click me)\" /\u003e","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" \u003cVBox fx:id\u003d\"helpCommandsContainer\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" \u003cLabel fx:id\u003d\"helpCommands\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":47,"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","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":50,"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","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false}],"authorContributionMap":{"benjiBase":18,"-":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" title\u003d\"NovaCare\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" \u003cStackPane VBox.vgrow\u003d\"ALWAYS\" fx:id\u003d\"taskListPanelPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"jarrellc1":6,"benjiBase":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" \u003cLabel fx:id\u003d\"emergencyContact\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$emergencyContact\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" \u003cLabel fx:id\u003d\"priorityLevel\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$priorityLevel\" /\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"gavinsoh":2,"-":36}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"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-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" \u003c!-- Task ID --\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" \u003c!-- Task Description --\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" \u003c!-- Patient Name --\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" \u003cLabel fx:id\u003d\"patient\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" \u003c!-- Task Status --\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":34,"xinweichong":2}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" public void execute_validTaskCommand_success() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":" Person amy \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":" model.addPerson(amy);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" String addTaskCommand \u003d AddTaskCommand.COMMAND_WORD + \" 1\" + \" d/Buy medication\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" Task expectedTask \u003d new Task(amy, \"Buy medication\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" expectedModel.addPerson(amy);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" expectedModel.addTask(expectedTask);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" assertCommandSuccess(addTaskCommand,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" String.format(AddTaskCommand.MESSAGE_SUCCESS, \"Buy medication\"), expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"benjiBase"},"content":" // Create a task to add","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"benjiBase"},"content":" Person amy \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" model.addPerson(amy);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" Task task \u003d new Task(amy, \"Buy medication\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":" model.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" // Ensure the task is added correctly","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" ObservableList\u003cTask\u003e filteredTaskList \u003d logic.getFilteredTaskList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" assertEquals(1, filteredTaskList.size());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" assertEquals(task, filteredTaskList.get(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // Try to modify the list, which should throw an UnsupportedOperationException","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e filteredTaskList.remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"gavinsoh"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withPriorityLevel(3).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"benjiBase":38,"gavinsoh":1,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority_priorityLevelReset_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" ModelStubWithPerson modelStub \u003d new ModelStubWithPerson(new PersonBuilder().withPriorityLevel(2).build());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" Person originalPerson \u003d modelStub.getResetPerson();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" modelStub.resetPersonPriority(originalPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" assertTrue(modelStub.wasPriorityResetCalled(), \"Priority reset should be called on the model stub.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" // Adjusted assertion to compare the integer value of PriorityLevel","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" assertEquals(3, modelStub.getResetPerson().getPriorityLevel().getValue(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" \"Priority level should be reset to 3.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" private boolean priorityWasReset \u003d false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"benjiBase"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority(Person target) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"gavinsoh"},"content":" priorityWasReset \u003d true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"gavinsoh"},"content":" public boolean wasPriorityReset() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"gavinsoh"},"content":" return priorityWasReset;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"gavinsoh"},"content":" private boolean priorityResetCalled \u003d false; // track if resetPersonPriority was called","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"gavinsoh"},"content":" private Person resetPerson; // mutable field to hold the modified person","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"gavinsoh"},"content":" this.resetPerson \u003d person; // initially, the reset person is the same as the original","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority(Person target) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"gavinsoh"},"content":" if (this.person.equals(target)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"gavinsoh"},"content":" this.priorityResetCalled \u003d true; // indicate that the method was called","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"gavinsoh"},"content":" this.resetPerson \u003d new PersonBuilder(person).withPriorityLevel(3).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"gavinsoh"},"content":" public boolean wasPriorityResetCalled() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"gavinsoh"},"content":" return priorityResetCalled;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"gavinsoh"},"content":" public Person getResetPerson() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"gavinsoh"},"content":" return resetPerson;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"gavinsoh"},"content":" private boolean priorityResetCalled \u003d false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority(Person target) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"gavinsoh"},"content":" // Check if the target person exists in the list and reset the priority","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"gavinsoh"},"content":" for (Person person : personsAdded) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"gavinsoh"},"content":" if (person.equals(target)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"gavinsoh"},"content":" this.priorityResetCalled \u003d true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"gavinsoh"},"content":" Person resetPerson \u003d new PersonBuilder(person).withPriorityLevel(3).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"gavinsoh"},"content":" personsAdded.set(personsAdded.indexOf(person), resetPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"gavinsoh"},"content":" break;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"gavinsoh"},"content":" public boolean wasPriorityResetCalled() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"gavinsoh"},"content":" return priorityResetCalled;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"benjiBase":31,"gavinsoh":61,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" private final ModelManager model \u003d new ModelManager();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" public void constructor_nullTaskDescription_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(Index.fromOneBased(1), null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null, \"Buy medication\"));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":" public void execute_indexDoesNotExist_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(outOfBoundIndex, \"Take medication\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_TASK_DISPLAYED_INDEX), () -\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" addTaskCommand.execute(model));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" public void execute_taskAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" ModelStubAcceptingTaskAdded modelStub \u003d new ModelStubAcceptingTaskAdded();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" Task validTask \u003d new Task(validPerson, \"Buy medication\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":" modelStub.addPerson(validPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(index, validTask.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" CommandResult commandResult \u003d addTaskCommand.execute(modelStub);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" modelStub.addPerson(validPerson);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" assertEquals(String.format(AddTaskCommand.MESSAGE_SUCCESS, validTask.getDescription()),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"benjiBase"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"benjiBase"},"content":" assertEquals(Arrays.asList(validTask), modelStub.tasksAdded);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"benjiBase"},"content":" public void execute_duplicateTask_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":" ModelStubAcceptingTaskAdded modelStub \u003d new ModelStubAcceptingTaskAdded();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":" Person validPerson \u003d new PersonBuilder().withName(\"Amy Bee\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" modelStub.addPerson(validPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"benjiBase"},"content":" Task validTask \u003d new Task(validPerson, \"Buy medication\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"benjiBase"},"content":" modelStub.addTask(validTask);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"benjiBase"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(index, validTask.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" assertThrows(CommandException.class, AddTaskCommand.MESSAGE_DUPLICATE_TASK, () -\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" addTaskCommand.execute(modelStub));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Buy meds\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Visit hospital\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" Index index2 \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1Command \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask2Command \u003d new AddTaskCommand(index2, task2.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":" assertTrue(addTask1Command.equals(addTask1Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"benjiBase"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1CommandCopy \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" assertTrue(addTask1Command.equals(addTask1CommandCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(1));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // different task -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(addTask2Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":" public void equals_sameTaskDescriptionDifferentIndex_returnsFalse() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Alice\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Bob\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"benjiBase"},"content":" Index index2 \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1Command \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask2Command \u003d new AddTaskCommand(index2, task2.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"benjiBase"},"content":" // Different personName should return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"benjiBase"},"content":" assertFalse(addTask1Command.equals(addTask2Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" public void equals_sameIndexDifferentDescriptionObjects_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Alice\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Buy meds\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":" .withPatient(new PersonBuilder().withName(\"Alice\").build()).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask1Command \u003d new AddTaskCommand(index1, task1.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand addTask2Command \u003d new AddTaskCommand(index1, task2.getDescription());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"benjiBase"},"content":" // Different Person objects but same name, should return true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"benjiBase"},"content":" assertTrue(addTask1Command.equals(addTask2Command));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"benjiBase"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"benjiBase"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"benjiBase"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"benjiBase"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"benjiBase"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"benjiBase"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"benjiBase"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"benjiBase"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"benjiBase"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"benjiBase"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"benjiBase"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"benjiBase"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"benjiBase"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"benjiBase"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"benjiBase"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"benjiBase"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"benjiBase"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"gavinsoh"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority(Person target) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"gavinsoh"},"content":" // No operation needed for this stub; this line is necessary to satisfy the interface.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"benjiBase"},"content":" * A Model stub that always accepts the task being added.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"benjiBase"},"content":" private class ModelStubAcceptingTaskAdded extends ModelStub {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"benjiBase"},"content":" final ArrayList\u003cTask\u003e tasksAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"benjiBase"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"benjiBase"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"benjiBase"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"benjiBase"},"content":" tasksAdded.add(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"benjiBase"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"benjiBase"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"benjiBase"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"benjiBase"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"benjiBase"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"benjiBase"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"benjiBase"},"content":" return FXCollections.observableArrayList(personsAdded);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"benjiBase"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"benjiBase"},"content":" requireNonNull(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"benjiBase"},"content":" return tasksAdded.stream().anyMatch(t -\u003e t.equals(task));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"benjiBase"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"benjiBase"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"benjiBase"},"content":" return new AddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":303,"gavinsoh":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NAME_AMY \u003d \"Timothy\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NAME_BOB \u003d \"Xiao Ming\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NUMBER_AMY \u003d \"33333333\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" public static final String VALID_EMERGENCY_CONTACT_NUMBER_BOB \u003d \"44444444\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" public static final String VALID_TASK_DESCRIPTION_BUY_MEDICATION \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" public static final int VALID_PRIORITY_AMY \u003d 2;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" public static final int VALID_PRIORITY_BOB \u003d 1;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" public static final int VALID_PRIORITY_LEVEL \u003d 1;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" public static final String PRIORITY_DESC_AMY \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" public static final String PRIORITY_DESC_BOB \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" public static final int INVALID_PRIORITY_LEVEL \u003d 4;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":" public static final String INVALID_TASK_DESCRIPTION_DESC \u003d \" \" + PREFIX_TASK_DESCRIPTION + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"gavinsoh"},"content":" .withTags(VALID_TAG_FRIEND).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"gavinsoh"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"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","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" * Updates {@code model}\u0027s filtered list to show only the task at the given {@code targetIndex} in the","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" * {@code model}\u0027s task list.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":" public static void showTaskAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"benjiBase"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredTaskList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"benjiBase"},"content":" Task task \u003d model.getFilteredTaskList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"benjiBase"},"content":" final String taskDescription \u003d task.getDescription();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"benjiBase"},"content":" model.updateFilteredTaskList(t -\u003e t.getDescription().equals(taskDescription));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"benjiBase"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"benjiBase":18,"gavinsoh":10,"-":125,"yixianggg":4}},{"path":"src/test/java/seedu/address/logic/commands/DeleteEmergencyContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":"public class DeleteEmergencyContactCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" public void execute_deleteEmergencyContactUnfilteredList_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withEmergencyContact(\"\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" \"\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand deleteEmergencyContactCommand \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" new DeleteEmergencyContactCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(DeleteEmergencyContactCommand.MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(deleteEmergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withEmergencyContact(\"\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" \"\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand deleteEmergencyContactCommand \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" new DeleteEmergencyContactCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(DeleteEmergencyContactCommand.MESSAGE_DELETE_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(deleteEmergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yixianggg"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand deleteEmergencyContactCommand \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" new DeleteEmergencyContactCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(deleteEmergencyContactCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yixianggg"},"content":" public void execute_noSavedEmergencyContact_failure() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" Person thirdPerson \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(thirdPerson).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand deleteEmergencyContactCommand \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" new DeleteEmergencyContactCommand(INDEX_THIRD_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(DeleteEmergencyContactCommand.MESSAGE_NO_EMERGENCY_CONTACT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(deleteEmergencyContactCommand, model, expectedMessage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand deleteEmergencyContactCommand \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":" new DeleteEmergencyContactCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(deleteEmergencyContactCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yixianggg"},"content":" public void equals() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yixianggg"},"content":" final DeleteEmergencyContactCommand standardCommand \u003d new DeleteEmergencyContactCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yixianggg"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand commandWithSameValues \u003d new DeleteEmergencyContactCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yixianggg"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yixianggg"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yixianggg"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yixianggg"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new DeleteEmergencyContactCommand(INDEX_SECOND_PERSON)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"yixianggg":101}},{"path":"src/test/java/seedu/address/logic/commands/DeletePriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"public class DeletePriorityCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" public void execute_validIndex_success() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" Person editedPerson \u003d new PersonBuilder(personToEdit).withPriorityLevel(3).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand deletePriorityCommand \u003d new DeletePriorityCommand(INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d String.format(\"Priority level reset to default for %s\", editedPerson.getName());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" // Execute the command","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" CommandResult commandResult \u003d deletePriorityCommand.execute(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" // Check that the command executed successfully","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" // Verify the person\u0027s priority level has been reset to default","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new PriorityLevel(3), model.getFilteredPersonList()","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" .get(INDEX_FIRST_PERSON.getZeroBased()).getPriorityLevel());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand deletePriorityCommand \u003d","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" new DeletePriorityCommand(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" assertThrows(CommandException.class, () -\u003e deletePriorityCommand.execute(model));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" public void equals() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand deleteFirstCommand \u003d new DeletePriorityCommand(INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand deleteSecondCommand \u003d new DeletePriorityCommand(INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" assertEquals(deleteFirstCommand, deleteFirstCommand);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" assertEquals(deleteFirstCommand, deleteSecondCommand);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" assertNotEquals(1, deleteFirstCommand);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" assertNotEquals(null, deleteFirstCommand);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"gavinsoh":70}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalAddressBookWithTasks;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBookWithTasks(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" taskToDelete.getDescription(), taskToDelete.getPatient().getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" showTaskAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":" Task taskToDelete \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":" taskToDelete.getDescription(), taskToDelete.getPatient().getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" showNoTask(expectedModel);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"benjiBase"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"benjiBase"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"benjiBase"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"benjiBase"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"benjiBase"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"benjiBase"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"benjiBase"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"benjiBase"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"benjiBase"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"benjiBase"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"benjiBase"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"benjiBase"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"benjiBase"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"benjiBase"},"content":" // different task -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"benjiBase"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"benjiBase"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" private void showNoTask(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" model.updateFilteredTaskList(t -\u003e false);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":" assertTrue(model.getFilteredTaskList().isEmpty());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":109}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", priorityLevel\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" + editPersonDescriptor.getPriorityLevel().orElse(null)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":3,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/EmergencyContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NAME_AMY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NAME_BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMERGENCY_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIFTH_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FOURTH_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommandTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" private static final String EMERGENCY_CONTACT_NAME_STUB \u003d \"Some name\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" private static final String EMERGENCY_CONTACT_NUMBER_STUB \u003d \"Some number\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" public void execute_addEmergencyContactUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" Person thirdPerson \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(thirdPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_THIRD_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(thirdPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yixianggg"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yixianggg"},"content":" showPersonAtIndex(model, INDEX_THIRD_PERSON);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yixianggg"},"content":" public void execute_overrideEmergencyContactWithOnlyNameUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yixianggg"},"content":" Person fourthPerson \u003d model.getFilteredPersonList().get(INDEX_FOURTH_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(fourthPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FOURTH_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(fourthPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" public void execute_overrideEmergencyContactWithOnlyNumberUnfilteredList_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yixianggg"},"content":" Person fifthPerson \u003d model.getFilteredPersonList().get(INDEX_FIFTH_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(fifthPerson).withEmergencyContact(EMERGENCY_CONTACT_NAME_STUB,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yixianggg"},"content":" EMERGENCY_CONTACT_NUMBER_STUB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FIFTH_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_ADD_EMERGENCY_CONTACT_SUCCESS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yixianggg"},"content":" expectedModel.setPerson(fifthPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yixianggg"},"content":" assertCommandSuccess(emergencyContactCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yixianggg"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yixianggg"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_BOB, VALID_EMERGENCY_CONTACT_NUMBER_BOB));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(emergencyContactCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yixianggg"},"content":" public void execute_overrideEmergencyContactUnfilteredList_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yixianggg"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yixianggg"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(editedPerson.getEmergencyContact().contactName,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yixianggg"},"content":" editedPerson.getEmergencyContact().contactNumber));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(EmergencyContactCommand.MESSAGE_EMERGENCY_CONTACT_EXISTS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yixianggg"},"content":" editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(emergencyContactCommand, model, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yixianggg"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yixianggg"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yixianggg"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yixianggg"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yixianggg"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand emergencyContactCommand \u003d new EmergencyContactCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_BOB, VALID_EMERGENCY_CONTACT_NUMBER_BOB));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yixianggg"},"content":" assertCommandFailure(emergencyContactCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yixianggg"},"content":" public void equals() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yixianggg"},"content":" final EmergencyContactCommand standardCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_AMY, VALID_EMERGENCY_CONTACT_NUMBER_AMY));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yixianggg"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand commandWithSameValues \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_AMY, VALID_EMERGENCY_CONTACT_NUMBER_AMY));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yixianggg"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yixianggg"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yixianggg"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yixianggg"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yixianggg"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yixianggg"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new EmergencyContactCommand(INDEX_SECOND_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_AMY, VALID_EMERGENCY_CONTACT_NUMBER_AMY))));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yixianggg"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yixianggg"},"content":" assertFalse(standardCommand.equals(new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(VALID_EMERGENCY_CONTACT_NAME_BOB, VALID_EMERGENCY_CONTACT_NUMBER_BOB))));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":150}},{"path":"src/test/java/seedu/address/logic/commands/MarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showTaskAtIndex;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalAddressBookWithTasks;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBookWithTasks(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" taskToMark.getDescription(), taskToMark.getPatient().getName());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" taskToMark.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" showTaskAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" Task taskToMark \u003d model.getFilteredTaskList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" taskToMark.getDescription(), taskToMark.getPatient().getName());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" taskToMark.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" showNoTask(expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":" showTaskAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" public void equals() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markFirstCommand \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markSecondCommand \u003d new MarkTaskCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" assertTrue(markFirstCommand.equals(markFirstCommand));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markFirstCommandCopy \u003d new MarkTaskCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" assertTrue(markFirstCommand.equals(markFirstCommandCopy));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" assertFalse(markFirstCommand.equals(1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" assertFalse(markFirstCommand.equals(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" // different task -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" assertFalse(markFirstCommand.equals(markSecondCommand));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(targetIndex);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" String expected \u003d MarkTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" assertEquals(expected, markTaskCommand.toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" private void showNoTask(Model model) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" model.updateFilteredTaskList(t -\u003e false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":" assertTrue(model.getFilteredTaskList().isEmpty());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":110}},{"path":"src/test/java/seedu/address/logic/commands/PriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_LEVEL;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" * Contains integration tests (interaction with the Model) and unit tests for PriorityCommand.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":"public class PriorityCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" public void execute_addValidPriorityLevelUnfilteredList_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(INDEX_FIRST_PERSON.getOneBased(), VALID_PRIORITY_LEVEL,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d String.format(\"Priority level %d successfully set for %s\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" VALID_PRIORITY_LEVEL, editedPerson.getName());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" assertCommandSuccess(priorityCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" public void execute_invalidPatientId_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" // Using an out-of-bounds index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(model.getFilteredPersonList().size() + 1,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" VALID_PRIORITY_LEVEL, false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" assertThrows(CommandException.class, () -\u003e priorityCommand.execute(model));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" public void execute_negativePatientId_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" // Using a negative index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(-1, VALID_PRIORITY_LEVEL, false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" assertThrows(CommandException.class, () -\u003e priorityCommand.execute(model));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" public void execute_invalidPriorityLevel_throwsCommandException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" // Create a command with an invalid priority level (e.g., 4)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(INDEX_FIRST_PERSON.getOneBased(), 4,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" assertThrows(CommandException.class, () -\u003e priorityCommand.execute(model));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" // Updated to include false for the reset flag in all PriorityCommand constructors","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" final PriorityCommand standardCommand \u003d new PriorityCommand(INDEX_FIRST_PERSON.getZeroBased(), 1,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"gavinsoh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand commandWithSameValues \u003d new PriorityCommand(INDEX_FIRST_PERSON.getZeroBased(), 1,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"gavinsoh"},"content":" false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"gavinsoh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"gavinsoh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"gavinsoh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"gavinsoh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"gavinsoh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"gavinsoh"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(new PriorityCommand(INDEX_SECOND_PERSON.getZeroBased(), 1,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"gavinsoh"},"content":" false)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"gavinsoh"},"content":" // different priorityLevel -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"gavinsoh"},"content":" assertFalse(standardCommand.equals(new PriorityCommand(INDEX_FIRST_PERSON.getZeroBased(), 2,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"gavinsoh"},"content":" false)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"gavinsoh":98}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"gavinsoh"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"gavinsoh"},"content":" .withTags()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"gavinsoh"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + PRIORITY_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"gavinsoh"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND + PRIORITY_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"gavinsoh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"gavinsoh":20,"-":181}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_DESCRIPTION_BUY_MEDICATION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand expectedCommand \u003d new AddTaskCommand(index1, \"Buy medication\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" // Correct format with `d/` and `p/`","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"benjiBase"},"content":" assertParseSuccess(parser, \"1 d/Buy medication\", expectedCommand);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"benjiBase"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"benjiBase"},"content":" // missing task description","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, NAME_DESC_BOB, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"benjiBase"},"content":" // missing person name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, VALID_TASK_DESCRIPTION_BUY_MEDICATION,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"benjiBase"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"benjiBase"},"content":" // invalid task description and valid index","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, \"addtask 1 p/!nv@l!d description\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"benjiBase"},"content":" // valid task description and invalid index","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, \"addtask a d/Buy medication\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"benjiBase"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"benjiBase"},"content":" String validTaskString \u003d VALID_TASK_DESCRIPTION_BUY_MEDICATION + NAME_DESC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"benjiBase"},"content":" // multiple task descriptions","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, VALID_TASK_DESCRIPTION_BUY_MEDICATION + validTaskString,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"benjiBase"},"content":" // multiple person names","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"benjiBase"},"content":" assertParseFailure(parser, validTaskString + NAME_DESC_BOB,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"benjiBase"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"benjiBase":62}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.DeleteEmergencyContactCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yixianggg"},"content":" public void parseCommand_emergencyContact() throws Exception {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yixianggg"},"content":" final EmergencyContact emergencyContact \u003d new EmergencyContact(\"Lily\", \"12345678\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand command \u003d (EmergencyContactCommand) parser.parseCommand(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yixianggg"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PREFIX_NAME + emergencyContact.getName() + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + emergencyContact.getNumber());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yixianggg"},"content":" assertEquals(new EmergencyContactCommand(INDEX_FIRST_PERSON, emergencyContact), command);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yixianggg"},"content":" public void parseCommand_deleteEmergencyContact() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand command \u003d (DeleteEmergencyContactCommand) parser.parseCommand(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yixianggg"},"content":" assertEquals(new DeleteEmergencyContactCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" public void parseCommand_mark() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand command \u003d (MarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" MarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":" assertEquals(new MarkTaskCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"benjiBase"},"content":" public void parseCommand_addTask() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"benjiBase"},"content":" String taskDescription \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"benjiBase"},"content":" Index index1 \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand expectedCommand \u003d new AddTaskCommand(index1, taskDescription);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"benjiBase"},"content":" String userInput \u003d AddTaskCommand.COMMAND_WORD + \" 1\" + \" d/\" + taskDescription;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"benjiBase"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"benjiBase"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"gavinsoh"},"content":" public void parseCommand_priorityMissingLevel_throwsParseException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand.MESSAGE_USAGE), () -\u003e parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"jarrellc1":2,"benjiBase":15,"gavinsoh":8,"xinweichong":8,"-":101,"yixianggg":22}},{"path":"src/test/java/seedu/address/logic/parser/DeleteEmergencyContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.DeleteEmergencyContactCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"public class DeleteEmergencyContactCommandParserTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":" private DeleteEmergencyContactCommandParser parser \u003d new DeleteEmergencyContactCommandParser();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" String userInput \u003d String.valueOf(targetIndex.getOneBased());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand expectedCommand \u003d new DeleteEmergencyContactCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" DeleteEmergencyContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" // no index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, DeleteEmergencyContactCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" // invalid index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, DeleteEmergencyContactCommand.COMMAND_WORD + \" a\", expectedMessage);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"yixianggg":31}},{"path":"src/test/java/seedu/address/logic/parser/DeletePriorityCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.commands.DeletePriorityCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"public class DeletePriorityCommandParserTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":" private final DeletePriorityCommandParser parser \u003d new DeletePriorityCommandParser();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" public void parse_validIndex_returnsDeletePriorityCommand() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" // Test with a valid index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand command \u003d parser.parse(\"1\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new DeletePriorityCommand(INDEX_FIRST_PERSON.getOneBased()), command);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" public void parse_validIndexWithWhitespace_returnsDeletePriorityCommand() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" // Test with leading and trailing whitespace","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" DeletePriorityCommand command \u003d parser.parse(\" 2 \");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new DeletePriorityCommand(INDEX_SECOND_PERSON.getOneBased()), command);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" public void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" // Test with an invalid index (non-integer)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\"),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" public void parse_negativeIndex_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" // Test with a negative index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" public void parse_zeroIndex_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" // Test with zero index","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" // Test with an empty input","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"gavinsoh":60}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benjiBase"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"benjiBase"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"benjiBase"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"benjiBase"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"benjiBase"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"benjiBase"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"benjiBase"},"content":" public void parse_validArgs_returnsDeleteTaskCommand() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"benjiBase"},"content":" assertParseSuccess(parser, \"1\", new DeleteTaskCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"benjiBase"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"benjiBase"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"benjiBase":24,"yixianggg":2}},{"path":"src/test/java/seedu/address/logic/parser/EmergencyContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yixianggg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yixianggg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yixianggg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":"import seedu.address.logic.commands.EmergencyContactCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yixianggg"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yixianggg"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yixianggg"},"content":"public class EmergencyContactCommandParserTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yixianggg"},"content":" private EmergencyContactCommandParser parser \u003d new EmergencyContactCommandParser();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yixianggg"},"content":" private final String nonEmptyEmergencyContactName \u003d \"Lily\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" private final String nonEmptyEmergencyContactNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yixianggg"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yixianggg"},"content":" // have remark","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yixianggg"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yixianggg"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_NAME + nonEmptyEmergencyContactName + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yixianggg"},"content":" + PREFIX_PHONE + nonEmptyEmergencyContactNumber;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" EmergencyContactCommand expectedCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(nonEmptyEmergencyContactName, nonEmptyEmergencyContactNumber));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yixianggg"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yixianggg"},"content":" // no remark","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yixianggg"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_NAME + \" \" + PREFIX_PHONE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" expectedCommand \u003d new EmergencyContactCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" new EmergencyContact(\"\", \"\"));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yixianggg"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yixianggg"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yixianggg"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, EmergencyContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yixianggg"},"content":" // no parameters","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, EmergencyContactCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yixianggg"},"content":" // no index","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yixianggg"},"content":" assertParseFailure(parser, EmergencyContactCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yixianggg"},"content":" + PREFIX_NAME + nonEmptyEmergencyContactName + \" \" + PREFIX_PHONE","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yixianggg"},"content":" + nonEmptyEmergencyContactNumber, expectedMessage);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yixianggg"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yixianggg"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"yixianggg":45}},{"path":"src/test/java/seedu/address/logic/parser/MarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"public class MarkTaskCommandParserTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" private MarkTaskCommandParser parser \u003d new MarkTaskCommandParser();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" public void parse_validArgs_returnsDeleteTaskCommand() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" assertParseSuccess(parser, \"1\", new MarkTaskCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"xinweichong":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" private static final String VALID_PRIORITY_LEVEL_1 \u003d \"1\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" private static final String VALID_PRIORITY_LEVEL_2 \u003d \"2\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" private static final String VALID_PRIORITY_LEVEL_3 \u003d \"3\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" private static final String INVALID_PRIORITY_LEVEL \u003d \"4\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" private static final String NON_NUMERIC_PRIORITY_LEVEL \u003d \"abc\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"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","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"gavinsoh"},"content":" // Tests for parsePriorityLevel","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_validLevel1_returnsPriorityLevel() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new PriorityLevel(1), ParserUtil.parsePriorityLevel(VALID_PRIORITY_LEVEL_1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_validLevel2_returnsPriorityLevel() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new PriorityLevel(2), ParserUtil.parsePriorityLevel(VALID_PRIORITY_LEVEL_2));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_validLevel3_returnsPriorityLevel() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new PriorityLevel(3), ParserUtil.parsePriorityLevel(VALID_PRIORITY_LEVEL_3));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_invalidLevel_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePriorityLevel(INVALID_PRIORITY_LEVEL));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_nonNumericLevel_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePriorityLevel(NON_NUMERIC_PRIORITY_LEVEL));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_emptyString_returnsDefaultPriorityLevel() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new PriorityLevel(3), ParserUtil.parsePriorityLevel(\" \"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"gavinsoh"},"content":" public void parsePriorityLevel_deleteKeyword_returnsDefaultPriorityLevel() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"gavinsoh"},"content":" assertEquals(new PriorityLevel(3), ParserUtil.parsePriorityLevel(\"delete\"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"gavinsoh"},"content":" // Tests for parseDeletePriorityLevel","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"gavinsoh"},"content":" public void parseDeletePriorityLevel_validDeleteCommand_returnsDefaultPriorityLevel() throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel expectedPriorityLevel \u003d new PriorityLevel(3);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"gavinsoh"},"content":" assertEquals(expectedPriorityLevel, ParserUtil.parseDeletePriorityLevel(\"deletelevel\"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"gavinsoh"},"content":" public void parseDeletePriorityLevel_validDeleteCommandWithWhitespace_returnsDefaultPriorityLevel()","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"gavinsoh"},"content":" throws Exception {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel expectedPriorityLevel \u003d new PriorityLevel(3);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"gavinsoh"},"content":" assertEquals(expectedPriorityLevel, ParserUtil.parseDeletePriorityLevel(\" deletelevel \"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"gavinsoh"},"content":" public void parseDeletePriorityLevel_nullInput_throwsNullPointerException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"gavinsoh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDeletePriorityLevel(null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"gavinsoh"},"content":" public void parseDeletePriorityLevel_invalidInput_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"gavinsoh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDeletePriorityLevel(\"invalid\"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"gavinsoh":68,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/PriorityCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"public class PriorityCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":" private PriorityCommandParser parser \u003d new PriorityCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" public void parse_extraArgs_throwsParseException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" assertParseFailure(parser, \" 1 id 5 level 2 extra\",","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" public void parse_validDeletePriority_success() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" String userInput \u003d \"deletelevel 1\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" PriorityCommand expectedCommand \u003d new PriorityCommand(1, 3, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" public void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"abc /level 2\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"-1 /level 2\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" public void parse_missingLevel_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" public void parse_incorrectCommandSyntax_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"1 /level notANumber\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" public void parse_invalidPriorityLevel_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"1 /level 4\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"1 /level 0\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"gavinsoh"},"content":" public void parse_nonNumericLevel_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"1 /level abc\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" public void parse_missingLevelArgument_throwsParseException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" assertParseFailure(parser, \"1 /level\", // Missing level argument","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"gavinsoh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"gavinsoh":49,"xinweichong":26}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" assertEquals(Collections.emptyList(), addressBook.getTaskList());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" //// Person-list tests","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e newTasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newTasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" //// Task-related tests","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":" public void resetData_withDuplicateTasks_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" // Two tasks with the same identity fields","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" Task duplicateTask \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" List\u003cPerson\u003e newPersons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e newTasks \u003d Arrays.asList(taskOne, duplicateTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newTasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasTask(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" public void hasTask_taskNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" assertFalse(addressBook.hasTask(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" public void hasTask_taskInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, \"First task description\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" addressBook.addTask(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":" assertTrue(addressBook.hasTask(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":" public void getTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getTaskList().remove(0));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":" + \", tasks\u003d\" + addressBook.getTaskList() + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"xinweichong"},"content":" private final ObservableList\u003cTask\u003e tasks \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"xinweichong"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons, Collection\u003cTask\u003e tasks) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"xinweichong"},"content":" this.tasks.setAll(tasks);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"xinweichong"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"xinweichong"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"xinweichong"},"content":" return tasks;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"xinweichong":55,"-":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"benjiBase"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"benjiBase"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"benjiBase"},"content":" public void hasTask_taskNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"benjiBase"},"content":" Task task \u003d new TaskBuilder().withDescription(\"Buy medication\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"benjiBase"},"content":" assertFalse(modelManager.hasTask(task));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"benjiBase"},"content":" public void hasTask_taskInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"benjiBase"},"content":" Task task \u003d new TaskBuilder().withDescription(\"Buy medication\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"benjiBase"},"content":" modelManager.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"benjiBase"},"content":" assertTrue(modelManager.hasTask(task));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"benjiBase"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"benjiBase"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredTaskList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"benjiBase"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"benjiBase"},"content":" public void deleteAssociatedTasks_personWithTasks_tasksDeleted() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"benjiBase"},"content":" Task task1 \u003d new TaskBuilder().withDescription(\"Task 1\").withPatient(ALICE).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"benjiBase"},"content":" Task task2 \u003d new TaskBuilder().withDescription(\"Task 2\").withPatient(ALICE).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"benjiBase"},"content":" // Add the tasks to the model","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"benjiBase"},"content":" modelManager.addTask(task1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"benjiBase"},"content":" modelManager.addTask(task2);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"benjiBase"},"content":" assertTrue(modelManager.hasTask(task1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"benjiBase"},"content":" assertTrue(modelManager.hasTask(task2));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"benjiBase"},"content":" modelManager.deleteAssociatedTasks(ALICE);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"benjiBase"},"content":" assertFalse(modelManager.hasTask(task1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"benjiBase"},"content":" assertFalse(modelManager.hasTask(task2));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"benjiBase"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"benjiBase"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority_validPerson_priorityLevelReset() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"gavinsoh"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"gavinsoh"},"content":" // Ensure initial priority level is set correctly","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"gavinsoh"},"content":" assertEquals(3, ALICE.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"gavinsoh"},"content":" // Reset the priority level","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"gavinsoh"},"content":" modelManager.resetPersonPriority(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"gavinsoh"},"content":" // Check that the priority level is reset to default (3)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"gavinsoh"},"content":" assertEquals(3, ALICE.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority_afterReset_priorityLevelIsThree() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"gavinsoh"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"gavinsoh"},"content":" // Reset priority level","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"gavinsoh"},"content":" modelManager.resetPersonPriority(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"gavinsoh"},"content":" // Verify the priority level has been reset to 3","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"gavinsoh"},"content":" assertEquals(3, ALICE.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"gavinsoh"},"content":" public void resetPersonPriority_multipleResets_priorityLevelRemainsThree() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"gavinsoh"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"gavinsoh"},"content":" // Reset priority level multiple times","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"gavinsoh"},"content":" modelManager.resetPersonPriority(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"gavinsoh"},"content":" modelManager.resetPersonPriority(ALICE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"gavinsoh"},"content":" // Verify the priority level remains 3 after multiple resets","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"gavinsoh"},"content":" assertEquals(3, ALICE.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"benjiBase":38,"gavinsoh":37,"-":132}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_LEVEL;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"gavinsoh"},"content":" // different priorityLevel -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"gavinsoh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"gavinsoh"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"gavinsoh"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"gavinsoh"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"gavinsoh"},"content":" + \", emergency contact\u003d\" + ALICE.getEmergencyContact()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" + \", priorityLevel\u003d\" + ALICE.getPriorityLevel().toString() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"gavinsoh":12,"-":97}},{"path":"src/test/java/seedu/address/model/person/PriorityLevelTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"public class PriorityLevelTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel priorityLevel \u003d new PriorityLevel(1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":" assertTrue(priorityLevel.equals(priorityLevel));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel priorityLevelCopy \u003d new PriorityLevel(priorityLevel.getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" assertTrue(priorityLevel.equals(priorityLevelCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" assertFalse(priorityLevel.equals(1));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" assertFalse(priorityLevel.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" // different priority level -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" PriorityLevel differentPriorityLevel \u003d new PriorityLevel(2);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" assertFalse(priorityLevel.equals(differentPriorityLevel));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"gavinsoh":31}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"public class TaskTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":" private static final String VALID_DESCRIPTION_ONE \u003d \"Administer medication\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":" private static final String VALID_DESCRIPTION_TWO \u003d \"Routine check-up\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":" public void constructor_nullFields_throwsNullPointerException() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":" // Test for null patient","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(null, VALID_DESCRIPTION_ONE));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" // Test for null description","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(ALICE, null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":" // Test for both null patient and description","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(null, null));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":" public void constructor_validFields_setsStatusAsIncompleteByDefault() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" Task incompleteTask \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, false);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" Task completeTask \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" assertFalse(incompleteTask.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":" assertTrue(completeTask.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" public void getPatient_validTask_returnsCorrectPatient() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":" assertEquals(ALICE, task.getPatient());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" public void getDescription_validTask_returnsCorrectDescription() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" assertEquals(VALID_DESCRIPTION_ONE, task.getDescription());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" public void getStatus_incompleteTask_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" assertFalse(task.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":" public void getStatus_completeTask_returnsTrue() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" assertTrue(task.getStatus());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" public void getStatusString_incompleteTask_returnsIncomplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" assertEquals(\"Incomplete\", task.getStatusString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" public void getStatusString_completeTask_returnsComplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE, true);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" assertEquals(\"Complete\", task.getStatusString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" public void markTaskComplete_incompleteTask_marksAsComplete() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" assertFalse(task.getStatus()); // initially incomplete","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" task.markTaskComplete();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" assertTrue(task.getStatus()); // now marked as complete","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" assertEquals(\"Complete\", task.getStatusString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" public void equals_sameValues_returnsTrue() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":" Task taskOneCopy \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" assertTrue(taskOne.equals(taskOneCopy));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" assertTrue(taskOne.equals(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" public void equals_null_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" public void equals_differentType_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(5));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" public void equals_differentDescription_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" Task taskTwo \u003d new Task(ALICE, VALID_DESCRIPTION_TWO);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(taskTwo));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":" public void equals_differentPatient_returnsFalse() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" Task taskOne \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" Task taskWithDifferentPerson \u003d new Task(BOB, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" assertFalse(taskOne.equals(taskWithDifferentPerson));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":" public void toString_validTask_returnsExpectedString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" Task task \u003d new Task(ALICE, VALID_DESCRIPTION_ONE);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":" String expected \u003d Task.class.getCanonicalName()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":" + \"{patient\u003d\" + task.getPatient()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" + \", description\u003d\" + task.getDescription()","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":" + \", status\u003d\" + task.getStatusString()","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"xinweichong"},"content":" + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"xinweichong"},"content":" assertEquals(expected, task.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":133}},{"path":"src/test/java/seedu/address/model/task/UniqueTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"xinweichong"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"xinweichong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"xinweichong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"xinweichong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"xinweichong"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"xinweichong"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"xinweichong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.DuplicateTaskException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"xinweichong"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"xinweichong"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"xinweichong"},"content":"public class UniqueTaskListTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"xinweichong"},"content":" private final UniqueTaskList uniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"xinweichong"},"content":" private final Task taskOne \u003d new Task(ALICE, \"Administer medication\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"xinweichong"},"content":" private final Task taskTwo \u003d new Task(BOB, \"Routine check-up\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"xinweichong"},"content":" public void contains_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.contains(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"xinweichong"},"content":" public void contains_taskNotInList_returnsFalse() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"xinweichong"},"content":" assertFalse(uniqueTaskList.contains(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"xinweichong"},"content":" public void contains_taskInList_returnsTrue() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"xinweichong"},"content":" assertTrue(uniqueTaskList.contains(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"xinweichong"},"content":" public void add_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.add(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"xinweichong"},"content":" public void add_duplicateTask_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e uniqueTaskList.add(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"xinweichong"},"content":" public void setTask_nullTargetTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTask(null, taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"xinweichong"},"content":" public void setTask_nullEditedTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTask(taskOne, null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"xinweichong"},"content":" public void setTask_targetTaskNotInList_throwsTaskNotFoundException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"xinweichong"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e uniqueTaskList.setTask(taskOne, taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskIsSameTask_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTask(taskOne, taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskHasSameIdentity_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"xinweichong"},"content":" Task editedTask \u003d new Task(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"xinweichong"},"content":" new PersonBuilder(ALICE).withAddress(\"New Address\").build(), \"Administer medication\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTask(taskOne, editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(editedTask);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTask(taskOne, taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"xinweichong"},"content":" public void setTask_editedTaskHasNonUniqueIdentity_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e uniqueTaskList.setTask(taskOne, taskTwo));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"xinweichong"},"content":" public void remove_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.remove(null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"xinweichong"},"content":" public void remove_taskDoesNotExist_throwsTaskNotFoundException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"xinweichong"},"content":" assertThrows(TaskNotFoundException.class, () -\u003e uniqueTaskList.remove(taskOne));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"xinweichong"},"content":" public void remove_existingTask_removesTask() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.remove(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"xinweichong"},"content":" public void setTasks_nullUniqueTaskList_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTasks((UniqueTaskList) null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"xinweichong"},"content":" public void setTasks_uniqueTaskList_replacesOwnListWithProvidedUniqueTaskList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTasks(expectedUniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"xinweichong"},"content":" public void setTasks_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"xinweichong"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTaskList.setTasks((List\u003cTask\u003e) null));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"xinweichong"},"content":" public void setTasks_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.add(taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e taskList \u003d Collections.singletonList(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"xinweichong"},"content":" uniqueTaskList.setTasks(taskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"xinweichong"},"content":" UniqueTaskList expectedUniqueTaskList \u003d new UniqueTaskList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"xinweichong"},"content":" expectedUniqueTaskList.add(taskTwo);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"xinweichong"},"content":" assertEquals(expectedUniqueTaskList, uniqueTaskList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"xinweichong"},"content":" public void setTasks_listWithDuplicateTasks_throwsDuplicateTaskException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"xinweichong"},"content":" List\u003cTask\u003e listWithDuplicateTasks \u003d Arrays.asList(taskOne, taskOne);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"xinweichong"},"content":" assertThrows(DuplicateTaskException.class, () -\u003e uniqueTaskList.setTasks(listWithDuplicateTasks));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"xinweichong"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"xinweichong"},"content":" assertThrows(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"xinweichong"},"content":" UnsupportedOperationException.class, () -\u003e uniqueTaskList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"xinweichong"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"xinweichong"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"xinweichong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"xinweichong"},"content":" assertEquals(uniqueTaskList.asUnmodifiableObservableList().toString(), uniqueTaskList.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"xinweichong"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"xinweichong"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"xinweichong":167}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavinsoh"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"gavinsoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"gavinsoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"gavinsoh"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"gavinsoh"},"content":" public void getSamplePersons_notNull() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":" assertNotNull(SampleDataUtil.getSamplePersons());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"gavinsoh"},"content":" public void getSamplePersons_correctData() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"gavinsoh"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"gavinsoh"},"content":" Person firstPerson \u003d samplePersons[0];","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Alex Yeoh\", firstPerson.getName().fullName);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"87438807\", firstPerson.getPhone().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"alexyeoh@example.com\", firstPerson.getEmail().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPerson.getAddress().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"gavinsoh"},"content":" assertEquals(1, firstPerson.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" public void getSampleAddressBook_containsExpectedPersons() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"gavinsoh"},"content":" ReadOnlyAddressBook sampleAb \u003d SampleDataUtil.getSampleAddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" assertNotNull(sampleAb);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" assertEquals(6, sampleAb.getPersonList().size()); // assuming there are 6 sample persons","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" Person firstPerson \u003d sampleAb.getPersonList().get(0);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Alex Yeoh\", firstPerson.getName().fullName);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"87438807\", firstPerson.getPhone().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"alexyeoh@example.com\", firstPerson.getEmail().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPerson.getAddress().value);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" assertEquals(1, firstPerson.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"gavinsoh"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" public void getTagSet_correctSetSizeAndContents() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" Set\u003cTag\u003e tags \u003d SampleDataUtil.getTagSet(\"friends\", \"colleagues\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" assertEquals(2, tags.size());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"gavinsoh"},"content":" assertTrue(tags.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"gavinsoh"},"content":" assertTrue(tags.contains(new Tag(\"colleagues\")));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"gavinsoh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" private static final String VALID_EMERGENCY_CONTACT_NAME \u003d BENSON.getEmergencyContact().getName();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yixianggg"},"content":" private static final String VALID_EMERGENCY_CONTACT_NUMBER \u003d BENSON.getEmergencyContact().getNumber();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" private static final int INVALID_PRIORITY_LEVEL \u003d 4; // valid levels are 1, 2, 3","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"gavinsoh"},"content":" private static final int VALID_PRIORITY_LEVEL \u003d 2;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"gavinsoh"},"content":" public void toModelType_invalidPriorityLevel_throwsIllegalValueException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_EMERGENCY_CONTACT_NAME,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, INVALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d PriorityLevel.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"gavinsoh"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"gavinsoh"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_EMERGENCY_CONTACT_NAME,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"gavinsoh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NAME, VALID_EMERGENCY_CONTACT_NUMBER, VALID_TAGS, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yixianggg"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_EMERGENCY_CONTACT_NAME,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yixianggg"},"content":" VALID_EMERGENCY_CONTACT_NUMBER, invalidTags, VALID_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"gavinsoh":14,"-":99,"yixianggg":19}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.storage.JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":" private static final String INVALID_DESCRIPTION \u003d \" \"; // Description cannot be empty","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" private static final String VALID_DESCRIPTION \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" private static final JsonAdaptedPerson VALID_PATIENT \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" private static final JsonAdaptedPerson INVALID_PATIENT \u003d new JsonAdaptedPerson(\"R@chel\", BENSON.getPhone().value,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yixianggg"},"content":" BENSON.getEmail().value, BENSON.getAddress().value, BENSON.getEmergencyContact().getName(),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yixianggg"},"content":" BENSON.getEmergencyContact().getNumber(), BENSON.getTags().stream().map(JsonAdaptedTag::new).toList(),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" BENSON.getPriorityLevel().getValue());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_validTaskDetails_returnsTask() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" Task task \u003d new Task(BENSON, VALID_DESCRIPTION);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask adaptedTask \u003d new JsonAdaptedTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" assertEquals(task, adaptedTask.toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(null, VALID_PATIENT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Description\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_nullPatient_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_DESCRIPTION, null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"Patient\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(INVALID_DESCRIPTION, VALID_PATIENT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_invalidPatient_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jarrellc1"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(VALID_DESCRIPTION, INVALID_PATIENT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, task::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":53,"yixianggg":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" private static final Path TYPICAL_TASKS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalTasksAddressBook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" private static final Path INVALID_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidTaskAddressBook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" private static final Path DUPLICATE_TASK_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTaskAddressBook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_typicalTasksFile_success() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_TASKS_FILE,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jarrellc1"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jarrellc1"},"content":" AddressBook expectedAddressBook \u003d new AddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addPerson(new PersonBuilder(ALICE).build());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addPerson(new PersonBuilder(BENSON).build());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addTask(new Task(new PersonBuilder(ALICE).build(), \"Buy medication\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jarrellc1"},"content":" expectedAddressBook.addTask(new Task(new PersonBuilder(BENSON).build(), \"Visit doctor\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jarrellc1"},"content":" assertEquals(expectedAddressBook, addressBookFromFile);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_invalidTaskFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_TASK_FILE,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jarrellc1"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jarrellc1"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TASK_FILE,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jarrellc1"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jarrellc1"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_TASK,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jarrellc1"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"jarrellc1":40,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" descriptor.setPriorityLevel(person.getPriorityLevel());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"gavinsoh"},"content":" * Sets the {@code PriorityLevel} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel the priority level to set for the person, must be a valid integer representing","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"gavinsoh"},"content":" * the priority (typically 1, 2, or 3).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"gavinsoh"},"content":" * @return the current instance of {@code EditPersonDescriptorBuilder} with the updated priority level.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"gavinsoh"},"content":" public EditPersonDescriptorBuilder withPriorityLevel(int priorityLevel) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"gavinsoh"},"content":" descriptor.setPriorityLevel(new PriorityLevel(priorityLevel));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"gavinsoh"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":14,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.EmergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"gavinsoh"},"content":"import seedu.address.model.person.PriorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yixianggg"},"content":" public static final String DEFAULT_EMERGENCY_CONTACT_NAME \u003d \"Billy\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yixianggg"},"content":" public static final String DEFAULT_EMERGENCY_CONTACT_NUMBER \u003d \"77777777\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"gavinsoh"},"content":" public static final int DEFAULT_PRIORITY_LEVEL \u003d 3;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" private EmergencyContact emergencyContact;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"gavinsoh"},"content":" private PriorityLevel priorityLevel;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" emergencyContact \u003d new EmergencyContact(\"\", \"\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"gavinsoh"},"content":" priorityLevel \u003d new PriorityLevel(DEFAULT_PRIORITY_LEVEL);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" emergencyContact \u003d personToCopy.getEmergencyContact();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"gavinsoh"},"content":" priorityLevel \u003d personToCopy.getPriorityLevel();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"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","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"gavinsoh"},"content":" * Sets the {@code EmergencyContact} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"gavinsoh"},"content":" public PersonBuilder withEmergencyContact(String emergencyContactName, String emergencyContactNumber) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"gavinsoh"},"content":" this.emergencyContact \u003d new EmergencyContact(emergencyContactName, emergencyContactNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"gavinsoh"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"gavinsoh"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"gavinsoh"},"content":" * Sets the {@code PriorityLevel} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"gavinsoh"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"gavinsoh"},"content":" * @param priorityLevel The priority level to be assigned to the person, represented as an integer.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"gavinsoh"},"content":" * Must be a valid priority level (typically within a predefined range, e.g., 1-3).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"gavinsoh"},"content":" * @return The current instance of {@code PersonBuilder} with the updated priority level.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"gavinsoh"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"gavinsoh"},"content":" public PersonBuilder withPriorityLevel(int priorityLevel) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"gavinsoh"},"content":" this.priorityLevel \u003d new PriorityLevel(priorityLevel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"gavinsoh"},"content":" return this;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"gavinsoh"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"gavinsoh"},"content":" return new Person(name, phone, email, address, emergencyContact, tags, priorityLevel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"jarrellc1":2,"gavinsoh":29,"-":95,"yixianggg":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"gavinsoh"},"content":" sb.append(PREFIX_PRIORITY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"gavinsoh"},"content":" descriptor.getPriorityLevel().ifPresent(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" priorityLevel -\u003e sb.append(PREFIX_PRIORITY).append(priorityLevel.getValue()).append(\" \"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"gavinsoh":4,"-":62}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":" * A utility class to help with building Task objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"public class TaskBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Buy medication\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":" public static final Name DEFAULT_PATIENT_NAME \u003d new Name(\"John Doe\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" private String description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" private Person patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" * Initializes the TaskBuilder with the default task details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" public TaskBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" this.description \u003d DEFAULT_DESCRIPTION;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" this.patient \u003d new PersonBuilder().withName(DEFAULT_PATIENT_NAME.fullName).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" * Sets the {@code description} of the {@code Task} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":" public TaskBuilder withDescription(String description) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" this.description \u003d description;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":" * Sets the {@code patient} of the {@code Task} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":" public TaskBuilder withPatient(Person patient) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" * Builds and returns the {@code Task}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" public Task build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" return new Task(patient, description);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":48}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yixianggg"},"content":" public static final Index INDEX_FOURTH_PERSON \u003d Index.fromOneBased(4);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yixianggg"},"content":" public static final Index INDEX_FIFTH_PERSON \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05","isFullCredit":false}],"authorContributionMap":{"-":12,"yixianggg":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"gavinsoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_LEVEL;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"gavinsoh"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"Billy\", \"77777777\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"gavinsoh"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"Ken\", \"66666666\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"gavinsoh"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yixianggg"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"Rich\", \"\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yixianggg"},"content":" .withTags(\"friends\").withPriorityLevel(3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yixianggg"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yixianggg"},"content":" .withEmergencyContact(\"\", \"99999999\").withPriorityLevel(3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"gavinsoh"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withPriorityLevel(3)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"gavinsoh"},"content":" .build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"gavinsoh"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_LEVEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"gavinsoh"},"content":" .withPriorityLevel(VALID_PRIORITY_LEVEL)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"gavinsoh":23,"-":66,"yixianggg":7}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jarrellc1"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jarrellc1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jarrellc1"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jarrellc1"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jarrellc1"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jarrellc1"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jarrellc1"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jarrellc1"},"content":"public class TypicalTasks {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jarrellc1"},"content":" public static final Task BUY_MEDICATION \u003d new TaskBuilder().withDescription(\"Buy medication\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.ALICE).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jarrellc1"},"content":" public static final Task VISIT_DOCTOR \u003d new TaskBuilder().withDescription(\"Visit doctor\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.BENSON).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jarrellc1"},"content":" public static final Task FILL_PRESCRIPTION \u003d new TaskBuilder().withDescription(\"Fill prescription\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.CARL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jarrellc1"},"content":" public static final Task CALL_FAMILY \u003d new TaskBuilder().withDescription(\"Call family\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.DANIEL).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jarrellc1"},"content":" public static final Task CHECK_VITALS \u003d new TaskBuilder().withDescription(\"Check vitals\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.ELLE).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jarrellc1"},"content":" public static final Task FOLLOW_UP_APPOINTMENT \u003d new TaskBuilder().withDescription(\"Follow-up appointment\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.FIONA).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jarrellc1"},"content":" public static final Task REMIND_PATIENT \u003d new TaskBuilder().withDescription(\"Remind patient of medication\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.GEORGE).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jarrellc1"},"content":" // Manually added tasks","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jarrellc1"},"content":" public static final Task CONSULTATION \u003d new TaskBuilder().withDescription(\"Consultation with specialist\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.HOON).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jarrellc1"},"content":" public static final Task MEDICAL_REPORT \u003d new TaskBuilder().withDescription(\"Submit medical report\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jarrellc1"},"content":" .withPatient(TypicalPersons.IDA).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jarrellc1"},"content":" private TypicalTasks() {} // prevents instantiation","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jarrellc1"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jarrellc1"},"content":" * Returns an {@code AddressBook} with all the typical tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jarrellc1"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jarrellc1"},"content":" public static AddressBook getTypicalAddressBookWithTasks() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jarrellc1"},"content":" AddressBook ab \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jarrellc1"},"content":" for (Task task : getTypicalTasks()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jarrellc1"},"content":" ab.addTask(task);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jarrellc1"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jarrellc1"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jarrellc1"},"content":" public static List\u003cTask\u003e getTypicalTasks() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jarrellc1"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(BUY_MEDICATION, VISIT_DOCTOR, FILL_PRESCRIPTION, CALL_FAMILY,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jarrellc1"},"content":" CHECK_VITALS, FOLLOW_UP_APPOINTMENT, REMIND_PATIENT));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jarrellc1"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jarrellc1"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jarrellc1":53}}] diff --git a/AY2425S1-CS2103T-F15-1_tp_master/commits.json b/AY2425S1-CS2103T-F15-1_tp_master/commits.json index b544bd55..2286a966 100644 --- a/AY2425S1-CS2103T-F15-1_tp_master/commits.json +++ b/AY2425S1-CS2103T-F15-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jarrellc1":[{"date":"2024-09-21","commitResults":[{"hash":"e0295c1f178b970ce8d192a66d10ee096ef46bab","isMergeCommit":false,"messageTitle":"Add Remark, RemandCommandParser classes to AB3","messageBody":"Update files to adhere to checkstyle conventions\n\nLet\u0027s add Remark functionality to AB3 to allow users to add remarks.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":12},"test-code":{"insertions":241,"deletions":62}}}]},{"date":"2024-10-02","commitResults":[{"hash":"79a29279a13abd8f202ffe7cf3d38506df01d4fc","isMergeCommit":false,"messageTitle":"Revert master branch manually","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":194},"test-code":{"insertions":62,"deletions":235}}},{"hash":"0a2e2c7efffbf00839e0eca48618374b3de5fe83","isMergeCommit":false,"messageTitle":"Update AboutUs for jarrellc1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"58769a01cb3a8d7d7ab0468d1c5fbdc694a81e07","isMergeCommit":true,"messageTitle":"Add benji photo from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"469eb432aebf6dcddd9c9f1a3c88c40fec6d7d98","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F15-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e85c04319ee467a07fbe89baee099dcc5d8436af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutUs-jarrellc1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"61995ec8a59cda9fb333c895a6e2f19c34a7c879","isMergeCommit":true,"messageTitle":"Update aboutUs from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"abf2194cf018be68b52221433843e617860d691d","isMergeCommit":true,"messageTitle":"Merge pull request #34 from gavinsoh/update-aboutus","messageBody":"Update AboutUs page for gavinsoh","fileTypesAndContributionMap":{}},{"hash":"3fa5dc868b02abf8dc94f6f59251ca2ae3e45208","isMergeCommit":false,"messageTitle":"Update developer guide to add Use Cases and NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":19}}},{"hash":"c2b82358e542724c1fe3284729d59e52d8034409","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jarrellc1/update-DG","messageBody":"Update developer guide to add Use Cases and NFR","fileTypesAndContributionMap":{}},{"hash":"ba3681365cabdd292e2345dd28de78e3caf69129","isMergeCommit":false,"messageTitle":"Update developer guide for grammer error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"36f70c232b40e5c0f979ec2fdd053ab9250a5dfb","isMergeCommit":true,"messageTitle":"Merge pull request #48 from jarrellc1/update-DG","messageBody":"Update developer guide for grammer error","fileTypesAndContributionMap":{}},{"hash":"a923099742a1ffca96c03278fd794c09028cc270","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-03","commitResults":[{"hash":"c79576a14f5bc5c254567ea386edd0fe12a9c4be","isMergeCommit":true,"messageTitle":"Update readme from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d9aa351e89fbb32a413e4367be5cc7a05cc5e255","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99c56f5f2fd0e74b7b3e61f2cf33d1923f161e0b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tasklist-ui","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"15421974657c8d9ff120ff5a95aca7fe35199b04","isMergeCommit":false,"messageTitle":"Add TaskUi and Task logic to AB3","messageBody":"Let\u0027s add these classes to AB3 to simulate task command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":409,"deletions":4},"test-code":{"insertions":501,"deletions":0}}},{"hash":"c8b002d16aab71e62caf947f9d1042113cfae43c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tasklist-ui","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n","fileTypesAndContributionMap":{}},{"hash":"0b62470dc62094d8c47748ab3b61aa15df0295ed","isMergeCommit":false,"messageTitle":"Add JsonSerializableAddressBook test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":93,"deletions":0}}},{"hash":"ea9af8d78788445815415762b9deea5c42a683a2","isMergeCommit":false,"messageTitle":"Update TestCases for logic manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":0}}},{"hash":"2eda4d9c1d3ff059847fdaa69488e24b25ab0ef3","isMergeCommit":false,"messageTitle":"Update AddTaskCommandTest to include more test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"4d7c5bcd73ac884d32363e28e63d8804705af37d","isMergeCommit":false,"messageTitle":"Update JsonSerializableAddressBook code logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4f046d17ec02b08849524815a4efbe70faf4b1b7","isMergeCommit":false,"messageTitle":"Update AddTaskCommandTest to add new equals test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":24}}}]},{"date":"2024-10-09","commitResults":[{"hash":"72af2592a42c023294a2555928cbe7ccb684abbb","isMergeCommit":true,"messageTitle":"Merge pull request #64 from benjiBase/delete-task","messageBody":"Add Delete Task Class and test cases","fileTypesAndContributionMap":{}},{"hash":"a6f79dfb7ee7fd1bcbf1ed8e000f5bd33725fae3","isMergeCommit":true,"messageTitle":"Merge pull request #66 from benjiBase/add-task-index","messageBody":"Change Add Task to add by index","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"9a24da5c5eed32512faea2ae6f60d8c5278c6b9d","isMergeCommit":false,"messageTitle":"Update userGuide to align with current specification","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":45,"deletions":3}}},{"hash":"5d2c5e9667088fefca3f1498717b11151b5510e8","isMergeCommit":true,"messageTitle":"Merge pull request #72 from yixianggg/add-emergency-contact","messageBody":"Update emergency contact command function to disallow overriding persons that already have existing emergency contacts","fileTypesAndContributionMap":{}},{"hash":"fae305e6f78e8832ededbbe517564f4a39838761","isMergeCommit":false,"messageTitle":"Update UserGuide to include new commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":9}}}]},{"date":"2024-10-16","commitResults":[{"hash":"96db29c317232eb2d114c6ef9dcff5978d4ab2d1","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"6fe84dd411046854d68749c0a75ebdf7f64e4a47","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into task-1.3","messageBody":"","fileTypesAndContributionMap":{}}]}],"benjiBase":[{"date":"2024-10-02","commitResults":[{"hash":"543bf5515675f1515f076de0147130fc0d4a69b4","isMergeCommit":false,"messageTitle":"Update benjamin aboutus docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":14}}},{"hash":"1b84ce87871cb86d922c832898ff8e251a93b448","isMergeCommit":false,"messageTitle":"Add line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7a82f0242bccd59d3a0743633d2000c2f31cc2e2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9fa4f94737747b6076beb68d978f97eda1bf488a","isMergeCommit":true,"messageTitle":"Resolve merge conflict on aboutus docs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d2784dac488d0f4ed629e9fcafb50e6e22dcb16b","isMergeCommit":true,"messageTitle":"Merge pull request #62 from jarrellc1/tasklist-ui","messageBody":"Tasklist UI and Logic","fileTypesAndContributionMap":{}},{"hash":"8d45023a64ed9282995be9dfb71a8129509d2dce","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommand and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":0},"test-code":{"insertions":65,"deletions":0}}},{"hash":"034d8f54067f1f294bb5f042cb66e7373761924f","isMergeCommit":false,"messageTitle":"Merge master branch onto delete-task branch","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":406,"deletions":16},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":607,"deletions":0}}},{"hash":"b0f64714d562c8becfc285d664a54bb7a7d41613","isMergeCommit":false,"messageTitle":"Merge master branch onto delete-task branch","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"6f872be2667068c3f2aa5beaeb7f3ba71daf2067","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommand Parser and test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":9},"test-code":{"insertions":30,"deletions":5}}},{"hash":"a8599485efd53176a73868dbd38ddd31396d0eeb","isMergeCommit":true,"messageTitle":"Update test cases for AddCommand and AddTaskCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0762cca438913d9ca68fb30a93e046d6578cbd62","isMergeCommit":false,"messageTitle":"Update testcasses for AddTaskCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-06","commitResults":[{"hash":"32f27cbd2b82e0c5e21b51aafc4ea0d03560c735","isMergeCommit":false,"messageTitle":"Update DeleteTaskCommand test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":74,"deletions":3}}},{"hash":"ae20c6c45452a12d46e30f2fb4fbd9550efa6dc9","isMergeCommit":false,"messageTitle":"Update Delete Command to remove tasks when patient is deleted and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0},"test-code":{"insertions":27,"deletions":0}}},{"hash":"37ed896161f28c40e44bf397f285b7f234df03f9","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"e7b8afe00175a3734f26b30c21fb8062a3710a93","isMergeCommit":true,"messageTitle":"Merge pull request #65 from yixianggg/add-emergency-contact","messageBody":"Update storage and Ui to incorporate emergency contact","fileTypesAndContributionMap":{}},{"hash":"b724ff4aed8bbc10c675965f90734a68e1e97c4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-task","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"f73fbe0dae109646304c1b88cd1e7d1d2a7b32fb","isMergeCommit":false,"messageTitle":"Add task by index instead of person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":19}}},{"hash":"ec28e521d17744018eada207ce54852942c291ae","isMergeCommit":false,"messageTitle":"Update Add Task command to add by index and testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":26},"test-code":{"insertions":22,"deletions":13}}},{"hash":"f74fa70b18e583c8d7be3d4cc0d466925a6f9638","isMergeCommit":false,"messageTitle":"Update AddTaskParser and AddTaskCommand testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":16}}}]},{"date":"2024-10-09","commitResults":[{"hash":"dd81ac0fa3c7e968db2f3d4521b51bb9ff438900","isMergeCommit":false,"messageTitle":"Update AddTaskCommand and Parser test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":11}}},{"hash":"32416ec88a9382338618144a57ff369a3b40ac8c","isMergeCommit":false,"messageTitle":"Remove redundant imports for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-16","commitResults":[{"hash":"f346b751e82171810de25e5d26a7224f7c95e3e3","isMergeCommit":false,"messageTitle":"Add sample commands in help and change title to NovaCare","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":17}}},{"hash":"b995b6e378e929f91a170e84dbb4a7a5fafcc010","isMergeCommit":false,"messageTitle":"Update HelpWindow to always be displayed at foreground","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"ae1d7679442bc54ed7dad061389ed0014f869724","isMergeCommit":false,"messageTitle":"Place Help Window at foreground after clicking back to Main App","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":7}}}]},{"date":"2024-10-17","commitResults":[{"hash":"afafa6ca29b168cab04402394ad9362591cb5734","isMergeCommit":false,"messageTitle":"Add HelpWindowTest cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":1,"deletions":0},"test-code":{"insertions":42,"deletions":0}}},{"hash":"8f049327470b4742c0e5ac88773ad8c8fe685ab7","isMergeCommit":false,"messageTitle":"Fix checkstyle Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"3f312776cd8b54f133746bd5162713c441935661","isMergeCommit":false,"messageTitle":"Remove GUI testing not needed","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":41}}},{"hash":"dff8b41a7577eb9f406585468c12f420fd79fab2","isMergeCommit":false,"messageTitle":"Add clicking link feature to open on webpage directly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":8}}},{"hash":"cb365b2407e561feeeea185a6b0a1635b5915847","isMergeCommit":false,"messageTitle":"Add EOF on HelpWindowCSS file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"gavinsoh":[{"date":"2024-09-20","commitResults":[{"hash":"f80547cfd3f98e45ead07b9c6d2f074c06d90f82","isMergeCommit":false,"messageTitle":"Add RemarkCommand to handle remarks in the address book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":259,"deletions":56},"test-code":{"insertions":310,"deletions":23}}},{"hash":"eeee07eb7cdefab9ff4d4e141b7c58c692cf15d9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from gavinsoh/tutorial-adding-command","messageBody":"tutorial-adding-command","fileTypesAndContributionMap":{}},{"hash":"8c595246847166a8929a22a3547819cc3c84fbf4","isMergeCommit":false,"messageTitle":"Revert \"tutorial-adding-command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":255},"test-code":{"insertions":23,"deletions":310}}}]},{"date":"2024-10-02","commitResults":[{"hash":"b4833eca4fa85620887ef2dbf728162730f951f8","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"198cb395a316e1b7cd40ae35f57c8e80beb17174","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jarrellc1/add-jarrell-photo","messageBody":"Add jarrell photo","fileTypesAndContributionMap":{}},{"hash":"5192ac34073bb2a6e203a6c29cbb4f3ef8611dbb","isMergeCommit":true,"messageTitle":"Add xinweichong\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cab2f9403b780fe96543a5889c7083b01594b936","isMergeCommit":true,"messageTitle":"resolve conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d2fadc4084257ad2235d75d1c659bd7e817c3149","isMergeCommit":false,"messageTitle":"resolve conflicts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}}]},{"date":"2024-10-03","commitResults":[{"hash":"c3b7a465849b269bcada2f1032e62c32677e6cb7","isMergeCommit":false,"messageTitle":"Add Priority class and tests, Update Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":239,"deletions":25},"test-code":{"insertions":42,"deletions":32}}}]},{"date":"2024-10-04","commitResults":[{"hash":"583ad7b70f4c9c266b261eaca7f359d89a3ec577","isMergeCommit":false,"messageTitle":"Add Priority class and tests, Update Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":3},"test-code":{"insertions":199,"deletions":45}}},{"hash":"543aa6d885ff7e8e97df7abc6aba86659ec24100","isMergeCommit":false,"messageTitle":"Add Priority class and tests, Update Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":5,"deletions":33}}},{"hash":"71415a390115846d0e0c177e28717e0f8b1b2f1f","isMergeCommit":true,"messageTitle":"Resolve Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec8878c4e8a0183275af3b73127936d00940f478","isMergeCommit":false,"messageTitle":"Resolve Merge Conflicts again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":10},"test-code":{"insertions":16,"deletions":1}}},{"hash":"5b4f07ba10e0736fce4e4a0bc94736c02cd8aeab","isMergeCommit":false,"messageTitle":"Update testcases to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"9ebd98ad3e94370f6b49f54d1765d6ad23b91415","isMergeCommit":false,"messageTitle":"Create SampleDataUtilTest to increase coverage for testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":0}}},{"hash":"b09b34841f7ec231aa9fc421a191a09281385caa","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"957d158859b263bf5c448fa29776ff7b13cb1deb","isMergeCommit":false,"messageTitle":"Update toStringMethod() in PersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"bdcd551bbb6bffdaad091602ca2d931ca427b342","isMergeCommit":false,"messageTitle":"Update testcases in AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"e47489d2b5081f50c9a779931fb742830edeb044","isMergeCommit":false,"messageTitle":"Update testcases in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":1}}},{"hash":"e00a216e67ea2a152f56bc06b5fc1c87b4f4d0c5","isMergeCommit":false,"messageTitle":"Update testcases in JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-10-10","commitResults":[{"hash":"3f971aa5fa2985a0e749afe9bf5987bfcaec1da9","isMergeCommit":false,"messageTitle":"Update constants in PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"f6b586555990f1e1c9a91209f78ca27f37d9f01f","isMergeCommit":false,"messageTitle":"Add Javadocs comments to PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"f076c22146552a0519ff5518f2febc0dd7eb67df","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yixianggg/add-emergency-contact","messageBody":"Edit Javadoc in EmergencyContactCommandParser class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"887e69764cdace11d937c2ab3f1a7b214e208e71","isMergeCommit":true,"messageTitle":"Merge pull request #73 from jarrellc1/task-1.3","messageBody":"Update userGuide to align with current specification","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"40cd3a9fb8abc64a0f9c3c7071fb066d26d6b9e7","isMergeCommit":true,"messageTitle":"Merge pull request #78 from xinweichong/mark-task","messageBody":"Mark tasks with completion status","fileTypesAndContributionMap":{}}]}],"xinweichong":[{"date":"2024-09-24","commitResults":[{"hash":"c8626d55ee198bd8fe4326652afe3026d9860447","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-F15-1/revert-1-tutorial-adding-command","messageBody":"Revert Gavin\u0027s \"tutorial-adding-command\"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5180f8a4257c33c9b3e176ccc5f0644d884842db","isMergeCommit":false,"messageTitle":"Edit AboutUs.md for xinweichong","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"019e94d4ce6e183a497f2d3efc44761e2b0b80ec","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5fff695c7a549e4376cf95a9b7575b1c0ea327d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21b46c48d5cf64b082400974dda49bb1d03c3519","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2b53305329274510416b172cc21982fb194edbf3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff7c27af80a392bfd16ed879b2d596e021d06469","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8e106aabbe69eabddd67be6d71e56ee19cb95b4e","isMergeCommit":false,"messageTitle":"Edit DG to update product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"15ffcf79f2c7f009f907a6fb370f7abd1111f2f2","isMergeCommit":false,"messageTitle":"Edit for final traces of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ea71866788936a3ac925017458abdbe89b8b0eb","isMergeCommit":false,"messageTitle":"Edit target user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"560b1857021a2bef227af87df2996b7e258bd735","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b0bb2ceeef40cf5a37e9bddb24c8a691781ef32c","isMergeCommit":false,"messageTitle":"Create UniqueTaskList and Task classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":0}}},{"hash":"848b49f708e6174d2075ee73950e32ee3d9ece02","isMergeCommit":false,"messageTitle":"Edit UniqueTaskList to make use of Task class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"7b0143264eb31b69e632c66d90d9484efbd0204b","isMergeCommit":false,"messageTitle":"Edit AddressBook to support UniqueTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":2}}},{"hash":"6d731e207858a994e3867f3cd8e2bade8d5f3ef6","isMergeCommit":false,"messageTitle":"Fix bugs and checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0},"test-code":{"insertions":13,"deletions":2}}},{"hash":"37dc6d1cb4055b723dbc67468b69e00a6681a0e0","isMergeCommit":false,"messageTitle":"Add tests for Task and UniqueTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":283,"deletions":1}}},{"hash":"b38065ff0889460bc65dce69023028b705b85b76","isMergeCommit":true,"messageTitle":"Merge pull request #55 from yixianggg/add-emergency-contact","messageBody":"Add emergency contact class and tests, update parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"f77e9b4057816c4b5c6f41341b525dea454cc3a2","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yixianggg/add-emergency-contact","messageBody":"Add and integrate remark class, update tests","fileTypesAndContributionMap":{}},{"hash":"e0a47346b9e8082d8d6a15f8ccbf9b9428b26c58","isMergeCommit":true,"messageTitle":"Merge pull request #57 from gavinsoh/add-priority","messageBody":"Add Priority class and tests, Update Parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"d66ffaf7101605894048a1a38c0fb22982bf53ad","isMergeCommit":false,"messageTitle":"Add PriorityCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":27,"deletions":0}}},{"hash":"96c65df374f49877fecdc5f04015904a415c4ec7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from gavinsoh/add-priority","messageBody":"Update constants in PriorityCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"77f73048ad520693e2853b38e9d326bcb8f3c1fb","isMergeCommit":false,"messageTitle":"Add status field to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}},{"hash":"5052d3fe8eaaa1c5f70edf5ec6aeb979f66755d2","isMergeCommit":false,"messageTitle":"Update logic to mark task as complete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":0}}},{"hash":"5dd53bda093adf0c97175a8d6c7c60f2d0196f24","isMergeCommit":false,"messageTitle":"Update UI to reflect status property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":7}}},{"hash":"e3752b2a51c35f34f996ba0769b5f2e06d66190a","isMergeCommit":false,"messageTitle":"Update test for new status property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"fb5ef6b7052ecdfd7ed0e169c7c5884af2fd7f03","isMergeCommit":false,"messageTitle":"Update tests for new classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":226,"deletions":24}}}]}],"yixianggg":[{"date":"2024-10-02","commitResults":[{"hash":"2b9492bc859f300e141f8dc3d562f10e6ee91c49","isMergeCommit":false,"messageTitle":"Update AboutUs.md for yixianggg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"22078a8245265c593e248ef59c193e7566497617","isMergeCommit":false,"messageTitle":"Update AboutUs.md for yixianggg, add in image link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"062ebb1b3a9631cf95db2f8513cbe24b3275c6ae","isMergeCommit":true,"messageTitle":"add gavin photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48e80557ca7545366c4cbf6e7375474fb4647d71","isMergeCommit":true,"messageTitle":"add benji photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"31ef01afcbb208f3506de8c46f59f4b6b093e6fc","isMergeCommit":true,"messageTitle":"add xinweichong photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1ccb5ad601a00d3c05c4d3a197c400e2b7696f9","isMergeCommit":true,"messageTitle":"add yixianggg photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d820a4fad23270595fa162cdfed4979cb9ed1b0","isMergeCommit":true,"messageTitle":"add jarrel photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"036ecf976c081b32e80a71b1e2aa279c6f1ce2ff","isMergeCommit":true,"messageTitle":"Merge pull request #32 from xinweichong/update-aboutus-xinweichong","messageBody":"Update AboutUS for xinweichong","fileTypesAndContributionMap":{}},{"hash":"25f76bd88b3a830cd4d08edda8b353dde3e7355c","isMergeCommit":true,"messageTitle":"Add xinwei about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eb783b6234bc3ca57416d21835800f15bbf97216","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yixianggg/add-about-us","messageBody":"Update AboutUs for yixianggg","fileTypesAndContributionMap":{}},{"hash":"0d60c7b2b5d5b46ce8bff9db3c55d4d3ec50c9eb","isMergeCommit":true,"messageTitle":"Merge pull request #31 from benjiBase/update-aboutus","messageBody":"Update Benjamin\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"7eb7ae2e4bd831f4644f2e3d8885801992a9639e","isMergeCommit":true,"messageTitle":"Merge pull request #41 from jarrellc1/update-aboutUs-jarrellc1","messageBody":"Update about us jarrellc1","fileTypesAndContributionMap":{}},{"hash":"30d388982ad513a1c6474193c8c5fd654e4f5073","isMergeCommit":false,"messageTitle":"Update ReadMe for NovaCare","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}},{"hash":"b4af39dde7d9f28f2d19ade9762c7887b8cb7c8d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yixianggg/update-readme","messageBody":"Update ReadMe for NovaCare","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"c61b9d02caffc8547d53f99e9d7359cfe770fb5a","isMergeCommit":false,"messageTitle":"Update ReadMe to remove traces of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"2023b66207d69b29433820716d2b0c4208eb514d","isMergeCommit":true,"messageTitle":"Merge pull request #49 from yixianggg/update-readme","messageBody":"Update ReadMe to remove traces of AB3","fileTypesAndContributionMap":{}},{"hash":"317cabfd7bcd2d7ee4337f96c3a6cb45c72884cb","isMergeCommit":true,"messageTitle":"Merge pull request #50 from xinweichong/update-dg","messageBody":"Update DG to remove traces of AB3","fileTypesAndContributionMap":{}},{"hash":"107577809b4262ea4945b1a8f411b33a51340f48","isMergeCommit":false,"messageTitle":"Add new EmergencyContactCommand class and update parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"81766d5e70d431b9ed47bd7b4f11e370af43c1af","isMergeCommit":false,"messageTitle":"Add EmergencyContactCommandTest class and update parser test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"7bf2c0bf627ec53e261f8c1d5d0fe9eef3f22a77","isMergeCommit":false,"messageTitle":"Enhance EmergencyContactCommand to accept parameters","messageBody":"EmergencyContactCommand does not accept any parameters or throw any\nexceptions.\n\nEmergencyContactCommand has to accept parameters to allow adding of\nemergency contacts.\n\nEdit EmergencyContactCommand class to accept parameters for\nemergencyContactName and emergencyContactNumber, as well as for it to\nthrow exceptions for errors.\n\nAllows for EmergencyContactCommand to be parsed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":2}}},{"hash":"40eb9e253c4eaab53c8a32430ea9b059b794d747","isMergeCommit":false,"messageTitle":"Update command and parser tests, add EmergencyContactCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":96,"deletions":4}}},{"hash":"9c20852bfe51f2f692cee32cf8efb40d9458c76b","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"9ca4f7f37f6ab75327e4b01db3e4c2d239dae283","isMergeCommit":true,"messageTitle":"Merge pull request #53 from xinweichong/create-tasklist","messageBody":"Create TaskList class","fileTypesAndContributionMap":{}},{"hash":"93e07ce55d7d3b90e7f86faa2112b9956c832e06","isMergeCommit":false,"messageTitle":"Add and integrate remark tasks, update tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":13},"test-code":{"insertions":17,"deletions":18}}},{"hash":"40af2189ad1ae430f6c6fcc92341865acc43f82a","isMergeCommit":false,"messageTitle":"Add placeholder element and modify Person to support EmergencyContact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":10}}},{"hash":"ae42acb2a52c9efcf5d87229b4572b2eb583b470","isMergeCommit":false,"messageTitle":"Update PersonBuilder class with EmergencyContact implementation","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":1}}},{"hash":"6a90c8d81a016bb5d283de23b5ac95cb9d14ff02","isMergeCommit":false,"messageTitle":"Fix checkstyle and update toStringMethod in PersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"c718786bfac7426e29d030ed7b63a3600901f7c5","isMergeCommit":false,"messageTitle":"Update storage to incorporate emergency contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"test-code":{"insertions":25,"deletions":21}}},{"hash":"5a625e39ac8084f9b7f57338c087b3d5224c19c2","isMergeCommit":false,"messageTitle":"Update EmergencyContactCommand and parser to show contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":6},"test-code":{"insertions":72,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9c3a2737a4469e93092628a1b117c6dd27fc0586","isMergeCommit":true,"messageTitle":"Merge pull request #67 from xinweichong/create-tasklist","messageBody":"Add PriorityCommandParserTest.java","fileTypesAndContributionMap":{}},{"hash":"fff5e5d471d92db0ac0e236705d96742b8254916","isMergeCommit":false,"messageTitle":"Edit Javadoc in EmergencyContactCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-13","commitResults":[{"hash":"d609d903069c02153d979eb8d39999efef998b5e","isMergeCommit":false,"messageTitle":"Edit logic in emergency contact to prevent overriding","messageBody":"EmergencyContactCommand allows for user to override previous emergency\ncontact of Person.\n\nAdd logic in execute() method of EmergencyContactCommand to check if\nemergency contact already exists in person to be edited\n\nPrevents emergency contact to be changed through the emergency command,\nreducing possibilities of mistakes in which the index may be entered\nwrongly which would change the wrong emergency contact\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"1d309845c15ccee9d158c763d496e3bbcae84b59","isMergeCommit":false,"messageTitle":"Edit naming typos in EmergencyContactCommandTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"517ef0ae8e0876121f1e2ece9ccfeeb21c061832","isMergeCommit":false,"messageTitle":"Update emergencyContactCommand tests","messageBody":"Test cases fail due to new changes in emergencyContactCommand logic in\nwhich emergency contacts now cannot be overridden.\n\nUpdate add emergency command test case to use different Person with no\nemergency contact to begin with. Remove delete emergency contact test\nwhich will be implemented in the future along with the delete function.\nAdd new test case to test that attempts to override an emergency\ncontact results in a thrown exception.\n\nTo ensure that test cases are up to date and able to ensure the\nfunctionality of the product.\n","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":10}}},{"hash":"46e1df987f17cdb0b3b5a3982085b0b8a4573c5d","isMergeCommit":false,"messageTitle":"Add test case in EmergencyContactCommandTest to test delete message","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":8}}},{"hash":"bb14a8ab2f431cfeed203a0747dba82f3cfe6e2c","isMergeCommit":false,"messageTitle":"Edit logic in execute() method for EmergencyContactCommand","messageBody":"Current logic checks if emergency contact name field or emergency\ncontact number field is not empty, and if either is not empty it will\nthrow the override exception.\n\nBoth should be empty before disallowing the user to override the\nemergency contact.\n\nMaintains the integrity of emergency contact such that it has to have\nboth a name and number.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"1fa5f6bac846ef55de8eb32bba73af0336682380","isMergeCommit":false,"messageTitle":"Add 2 tests to EmergencyContactCommandTest class to test logic","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":2}}},{"hash":"3287a460ad27181c2de1d9a29e5e5388773d80d0","isMergeCommit":false,"messageTitle":"Edit syntax for readability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-17","commitResults":[{"hash":"fca86a2df380c4c895bb2e965dc2e34e2fb0d6f1","isMergeCommit":true,"messageTitle":"Merge pull request #75 from jarrellc1/task-1.3","messageBody":"Update UserGuide to include new commands","fileTypesAndContributionMap":{}},{"hash":"7ec592893f81aa66573268c0efe2034a1739d394","isMergeCommit":true,"messageTitle":"Merge pull request #83 from benjiBase/help-command","messageBody":"Update Help command to display all our commands","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jarrellc1":{"docs":124,"functional-code":224,"test-code":198},"benjiBase":{"docs":5,"functional-code":407,"test-code":639},"gavinsoh":{"docs":12,"functional-code":296,"test-code":288},"xinweichong":{"docs":9,"functional-code":434,"test-code":525},"yixianggg":{"docs":14,"functional-code":209,"test-code":260}},"authorContributionVariance":{"jarrellc1":58908.664,"benjiBase":52348.73,"gavinsoh":66466.336,"xinweichong":18507.334,"yixianggg":7626.6875},"authorDisplayNameMap":{"jarrellc1":"CS2103T-F15-1 JARR..HENG","benjiBase":"CS2103T-F15-1 LIM ..AMIN","gavinsoh":"CS2103T-F15-1 SOH ..AVIN","xinweichong":"CS2103T-F15-1 CHON.. WEI","yixianggg":"CS2103T-F15-1 CHOO..IANG"}} +{"authorDailyContributionsMap":{"jarrellc1":[{"date":"2024-09-21","commitResults":[{"hash":"e0295c1f178b970ce8d192a66d10ee096ef46bab","isMergeCommit":false,"messageTitle":"Add Remark, RemandCommandParser classes to AB3","messageBody":"Update files to adhere to checkstyle conventions\n\nLet\u0027s add Remark functionality to AB3 to allow users to add remarks.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":12},"test-code":{"insertions":241,"deletions":62}}}]},{"date":"2024-10-02","commitResults":[{"hash":"79a29279a13abd8f202ffe7cf3d38506df01d4fc","isMergeCommit":false,"messageTitle":"Revert master branch manually","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":194},"test-code":{"insertions":62,"deletions":235}}},{"hash":"0a2e2c7efffbf00839e0eca48618374b3de5fe83","isMergeCommit":false,"messageTitle":"Update AboutUs for jarrellc1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"58769a01cb3a8d7d7ab0468d1c5fbdc694a81e07","isMergeCommit":true,"messageTitle":"Add benji photo from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"469eb432aebf6dcddd9c9f1a3c88c40fec6d7d98","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-F15-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e85c04319ee467a07fbe89baee099dcc5d8436af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutUs-jarrellc1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"61995ec8a59cda9fb333c895a6e2f19c34a7c879","isMergeCommit":true,"messageTitle":"Update aboutUs from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"abf2194cf018be68b52221433843e617860d691d","isMergeCommit":true,"messageTitle":"Merge pull request #34 from gavinsoh/update-aboutus","messageBody":"Update AboutUs page for gavinsoh","fileTypesAndContributionMap":{}},{"hash":"3fa5dc868b02abf8dc94f6f59251ca2ae3e45208","isMergeCommit":false,"messageTitle":"Update developer guide to add Use Cases and NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":19}}},{"hash":"c2b82358e542724c1fe3284729d59e52d8034409","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jarrellc1/update-DG","messageBody":"Update developer guide to add Use Cases and NFR","fileTypesAndContributionMap":{}},{"hash":"ba3681365cabdd292e2345dd28de78e3caf69129","isMergeCommit":false,"messageTitle":"Update developer guide for grammer error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"36f70c232b40e5c0f979ec2fdd053ab9250a5dfb","isMergeCommit":true,"messageTitle":"Merge pull request #48 from jarrellc1/update-DG","messageBody":"Update developer guide for grammer error","fileTypesAndContributionMap":{}},{"hash":"a923099742a1ffca96c03278fd794c09028cc270","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-03","commitResults":[{"hash":"c79576a14f5bc5c254567ea386edd0fe12a9c4be","isMergeCommit":true,"messageTitle":"Update readme from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d9aa351e89fbb32a413e4367be5cc7a05cc5e255","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99c56f5f2fd0e74b7b3e61f2cf33d1923f161e0b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tasklist-ui","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"15421974657c8d9ff120ff5a95aca7fe35199b04","isMergeCommit":false,"messageTitle":"Add TaskUi and Task logic to AB3","messageBody":"Let\u0027s add these classes to AB3 to simulate task command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":409,"deletions":4},"test-code":{"insertions":501,"deletions":0}}},{"hash":"c8b002d16aab71e62caf947f9d1042113cfae43c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tasklist-ui","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n","fileTypesAndContributionMap":{}},{"hash":"0b62470dc62094d8c47748ab3b61aa15df0295ed","isMergeCommit":false,"messageTitle":"Add JsonSerializableAddressBook test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":93,"deletions":0}}},{"hash":"ea9af8d78788445815415762b9deea5c42a683a2","isMergeCommit":false,"messageTitle":"Update TestCases for logic manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":0}}},{"hash":"2eda4d9c1d3ff059847fdaa69488e24b25ab0ef3","isMergeCommit":false,"messageTitle":"Update AddTaskCommandTest to include more test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"4d7c5bcd73ac884d32363e28e63d8804705af37d","isMergeCommit":false,"messageTitle":"Update JsonSerializableAddressBook code logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4f046d17ec02b08849524815a4efbe70faf4b1b7","isMergeCommit":false,"messageTitle":"Update AddTaskCommandTest to add new equals test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":24}}}]},{"date":"2024-10-09","commitResults":[{"hash":"72af2592a42c023294a2555928cbe7ccb684abbb","isMergeCommit":true,"messageTitle":"Merge pull request #64 from benjiBase/delete-task","messageBody":"Add Delete Task Class and test cases","fileTypesAndContributionMap":{}},{"hash":"a6f79dfb7ee7fd1bcbf1ed8e000f5bd33725fae3","isMergeCommit":true,"messageTitle":"Merge pull request #66 from benjiBase/add-task-index","messageBody":"Change Add Task to add by index","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"9a24da5c5eed32512faea2ae6f60d8c5278c6b9d","isMergeCommit":false,"messageTitle":"Update userGuide to align with current specification","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":45,"deletions":3}}},{"hash":"5d2c5e9667088fefca3f1498717b11151b5510e8","isMergeCommit":true,"messageTitle":"Merge pull request #72 from yixianggg/add-emergency-contact","messageBody":"Update emergency contact command function to disallow overriding persons that already have existing emergency contacts","fileTypesAndContributionMap":{}},{"hash":"fae305e6f78e8832ededbbe517564f4a39838761","isMergeCommit":false,"messageTitle":"Update UserGuide to include new commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":9}}}]},{"date":"2024-10-16","commitResults":[{"hash":"96db29c317232eb2d114c6ef9dcff5978d4ab2d1","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"6fe84dd411046854d68749c0a75ebdf7f64e4a47","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into task-1.3","messageBody":"","fileTypesAndContributionMap":{}}]}],"benjiBase":[{"date":"2024-10-02","commitResults":[{"hash":"543bf5515675f1515f076de0147130fc0d4a69b4","isMergeCommit":false,"messageTitle":"Update benjamin aboutus docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":14}}},{"hash":"1b84ce87871cb86d922c832898ff8e251a93b448","isMergeCommit":false,"messageTitle":"Add line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7a82f0242bccd59d3a0743633d2000c2f31cc2e2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9fa4f94737747b6076beb68d978f97eda1bf488a","isMergeCommit":true,"messageTitle":"Resolve merge conflict on aboutus docs","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d2784dac488d0f4ed629e9fcafb50e6e22dcb16b","isMergeCommit":true,"messageTitle":"Merge pull request #62 from jarrellc1/tasklist-ui","messageBody":"Tasklist UI and Logic","fileTypesAndContributionMap":{}},{"hash":"8d45023a64ed9282995be9dfb71a8129509d2dce","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommand and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":0},"test-code":{"insertions":65,"deletions":0}}},{"hash":"034d8f54067f1f294bb5f042cb66e7373761924f","isMergeCommit":false,"messageTitle":"Merge master branch onto delete-task branch","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":406,"deletions":16},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":607,"deletions":0}}},{"hash":"b0f64714d562c8becfc285d664a54bb7a7d41613","isMergeCommit":false,"messageTitle":"Merge master branch onto delete-task branch","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"6f872be2667068c3f2aa5beaeb7f3ba71daf2067","isMergeCommit":false,"messageTitle":"Add DeleteTaskCommand Parser and test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":9},"test-code":{"insertions":30,"deletions":5}}},{"hash":"a8599485efd53176a73868dbd38ddd31396d0eeb","isMergeCommit":true,"messageTitle":"Update test cases for AddCommand and AddTaskCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0762cca438913d9ca68fb30a93e046d6578cbd62","isMergeCommit":false,"messageTitle":"Update testcasses for AddTaskCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-06","commitResults":[{"hash":"32f27cbd2b82e0c5e21b51aafc4ea0d03560c735","isMergeCommit":false,"messageTitle":"Update DeleteTaskCommand test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":74,"deletions":3}}},{"hash":"ae20c6c45452a12d46e30f2fb4fbd9550efa6dc9","isMergeCommit":false,"messageTitle":"Update Delete Command to remove tasks when patient is deleted and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0},"test-code":{"insertions":27,"deletions":0}}},{"hash":"37ed896161f28c40e44bf397f285b7f234df03f9","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"e7b8afe00175a3734f26b30c21fb8062a3710a93","isMergeCommit":true,"messageTitle":"Merge pull request #65 from yixianggg/add-emergency-contact","messageBody":"Update storage and Ui to incorporate emergency contact","fileTypesAndContributionMap":{}},{"hash":"b724ff4aed8bbc10c675965f90734a68e1e97c4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-task","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"f73fbe0dae109646304c1b88cd1e7d1d2a7b32fb","isMergeCommit":false,"messageTitle":"Add task by index instead of person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":19}}},{"hash":"ec28e521d17744018eada207ce54852942c291ae","isMergeCommit":false,"messageTitle":"Update Add Task command to add by index and testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":26},"test-code":{"insertions":22,"deletions":13}}},{"hash":"f74fa70b18e583c8d7be3d4cc0d466925a6f9638","isMergeCommit":false,"messageTitle":"Update AddTaskParser and AddTaskCommand testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":16}}}]},{"date":"2024-10-09","commitResults":[{"hash":"dd81ac0fa3c7e968db2f3d4521b51bb9ff438900","isMergeCommit":false,"messageTitle":"Update AddTaskCommand and Parser test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":11}}},{"hash":"32416ec88a9382338618144a57ff369a3b40ac8c","isMergeCommit":false,"messageTitle":"Remove redundant imports for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-16","commitResults":[{"hash":"f346b751e82171810de25e5d26a7224f7c95e3e3","isMergeCommit":false,"messageTitle":"Add sample commands in help and change title to NovaCare","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":17}}},{"hash":"b995b6e378e929f91a170e84dbb4a7a5fafcc010","isMergeCommit":false,"messageTitle":"Update HelpWindow to always be displayed at foreground","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"ae1d7679442bc54ed7dad061389ed0014f869724","isMergeCommit":false,"messageTitle":"Place Help Window at foreground after clicking back to Main App","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":7}}}]},{"date":"2024-10-17","commitResults":[{"hash":"afafa6ca29b168cab04402394ad9362591cb5734","isMergeCommit":false,"messageTitle":"Add HelpWindowTest cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":1,"deletions":0},"test-code":{"insertions":42,"deletions":0}}},{"hash":"8f049327470b4742c0e5ac88773ad8c8fe685ab7","isMergeCommit":false,"messageTitle":"Fix checkstyle Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"3f312776cd8b54f133746bd5162713c441935661","isMergeCommit":false,"messageTitle":"Remove GUI testing not needed","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":41}}},{"hash":"dff8b41a7577eb9f406585468c12f420fd79fab2","isMergeCommit":false,"messageTitle":"Add clicking link feature to open on webpage directly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":8}}},{"hash":"cb365b2407e561feeeea185a6b0a1635b5915847","isMergeCommit":false,"messageTitle":"Add EOF on HelpWindowCSS file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"gavinsoh":[{"date":"2024-09-20","commitResults":[{"hash":"f80547cfd3f98e45ead07b9c6d2f074c06d90f82","isMergeCommit":false,"messageTitle":"Add RemarkCommand to handle remarks in the address book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":259,"deletions":56},"test-code":{"insertions":310,"deletions":23}}},{"hash":"eeee07eb7cdefab9ff4d4e141b7c58c692cf15d9","isMergeCommit":true,"messageTitle":"Merge pull request #1 from gavinsoh/tutorial-adding-command","messageBody":"tutorial-adding-command","fileTypesAndContributionMap":{}},{"hash":"8c595246847166a8929a22a3547819cc3c84fbf4","isMergeCommit":false,"messageTitle":"Revert \"tutorial-adding-command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":255},"test-code":{"insertions":23,"deletions":310}}}]},{"date":"2024-10-02","commitResults":[{"hash":"b4833eca4fa85620887ef2dbf728162730f951f8","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"198cb395a316e1b7cd40ae35f57c8e80beb17174","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jarrellc1/add-jarrell-photo","messageBody":"Add jarrell photo","fileTypesAndContributionMap":{}},{"hash":"5192ac34073bb2a6e203a6c29cbb4f3ef8611dbb","isMergeCommit":true,"messageTitle":"Add xinweichong\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cab2f9403b780fe96543a5889c7083b01594b936","isMergeCommit":true,"messageTitle":"resolve conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d2fadc4084257ad2235d75d1c659bd7e817c3149","isMergeCommit":false,"messageTitle":"resolve conflicts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}}]},{"date":"2024-10-03","commitResults":[{"hash":"c3b7a465849b269bcada2f1032e62c32677e6cb7","isMergeCommit":false,"messageTitle":"Add Priority class and tests, Update Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":239,"deletions":25},"test-code":{"insertions":42,"deletions":32}}}]},{"date":"2024-10-04","commitResults":[{"hash":"583ad7b70f4c9c266b261eaca7f359d89a3ec577","isMergeCommit":false,"messageTitle":"Add Priority class and tests, Update Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":3},"test-code":{"insertions":199,"deletions":45}}},{"hash":"543aa6d885ff7e8e97df7abc6aba86659ec24100","isMergeCommit":false,"messageTitle":"Add Priority class and tests, Update Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":5,"deletions":33}}},{"hash":"71415a390115846d0e0c177e28717e0f8b1b2f1f","isMergeCommit":true,"messageTitle":"Resolve Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec8878c4e8a0183275af3b73127936d00940f478","isMergeCommit":false,"messageTitle":"Resolve Merge Conflicts again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":10},"test-code":{"insertions":16,"deletions":1}}},{"hash":"5b4f07ba10e0736fce4e4a0bc94736c02cd8aeab","isMergeCommit":false,"messageTitle":"Update testcases to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"9ebd98ad3e94370f6b49f54d1765d6ad23b91415","isMergeCommit":false,"messageTitle":"Create SampleDataUtilTest to increase coverage for testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":0}}},{"hash":"b09b34841f7ec231aa9fc421a191a09281385caa","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"957d158859b263bf5c448fa29776ff7b13cb1deb","isMergeCommit":false,"messageTitle":"Update toStringMethod() in PersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"bdcd551bbb6bffdaad091602ca2d931ca427b342","isMergeCommit":false,"messageTitle":"Update testcases in AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"e47489d2b5081f50c9a779931fb742830edeb044","isMergeCommit":false,"messageTitle":"Update testcases in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":1}}},{"hash":"e00a216e67ea2a152f56bc06b5fc1c87b4f4d0c5","isMergeCommit":false,"messageTitle":"Update testcases in JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-10-10","commitResults":[{"hash":"3f971aa5fa2985a0e749afe9bf5987bfcaec1da9","isMergeCommit":false,"messageTitle":"Update constants in PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"f6b586555990f1e1c9a91209f78ca27f37d9f01f","isMergeCommit":false,"messageTitle":"Add Javadocs comments to PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"f076c22146552a0519ff5518f2febc0dd7eb67df","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yixianggg/add-emergency-contact","messageBody":"Edit Javadoc in EmergencyContactCommandParser class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"887e69764cdace11d937c2ab3f1a7b214e208e71","isMergeCommit":true,"messageTitle":"Merge pull request #73 from jarrellc1/task-1.3","messageBody":"Update userGuide to align with current specification","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"7cf684ceaebba1f049ebd4fcab7fad88429ad303","isMergeCommit":false,"messageTitle":"Update PriorityCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"f11b19b716a8cc7cbda8f41f308bb782ba54aa83","isMergeCommit":false,"messageTitle":"Update PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3}}},{"hash":"fe994e3be536ce01457b76561a1e213f4fe78012","isMergeCommit":false,"messageTitle":"Update Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"01050bf0982dba5afd6713760174697f2e57194a","isMergeCommit":false,"messageTitle":"Update ModelManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"c2bd5f0509b8e3338b5c8258abc4c9df784939f3","isMergeCommit":false,"messageTitle":"Update ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"84d94ed528b07378fed35e0989fa1d4ddebcffae","isMergeCommit":false,"messageTitle":"Update PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"d8d5b30bec2092928870eed00586ce0437839c76","isMergeCommit":false,"messageTitle":"Update Testcases in PriorityCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":7}}},{"hash":"4cd169f2b389a05d20dbc62a363feea6bd120002","isMergeCommit":false,"messageTitle":"Update Testcases in AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":0}}},{"hash":"2fe3eaac382856543a0e849e0d899bde18ec8340","isMergeCommit":false,"messageTitle":"Update Testcases in AddTaskCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"e145082a4a4d54db79a09e1dd970cac8845fec57","isMergeCommit":false,"messageTitle":"Update AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"bc0e6bac6f91fe95fb7d42f280747314bcd2b171","isMergeCommit":false,"messageTitle":"Update ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0}}},{"hash":"7c6f40ff6e068ac8a03521a396c274cb3b52abf5","isMergeCommit":false,"messageTitle":"Add DeletePriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":0}}},{"hash":"387af6cf2cbbd8a9656152bb53e01834ad45c28f","isMergeCommit":false,"messageTitle":"Add DeletePriorityCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":0}}},{"hash":"178af82034f4fbdd492ef8123cc27ba3321612be","isMergeCommit":false,"messageTitle":"Add Testcases in DeletePriorityCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"39e5f70c61039025a40cd68a2a9cba39c37a39b4","isMergeCommit":false,"messageTitle":"Add Testcases in DeletePriorityCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":70,"deletions":0}}},{"hash":"8ce01f236b5ff7eaec5646a6ee2509004fe43fc7","isMergeCommit":false,"messageTitle":"Add Testcases to ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":0}}},{"hash":"a22a209ead2773e1237b3bcc5a035d0e2ab05e5c","isMergeCommit":false,"messageTitle":"Add Testcases to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"e361c8dac55f72891c4d4dd22b6103f76999ccad","isMergeCommit":false,"messageTitle":"Add Testcases to ParserUtilTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"7d82a2cfc9332ae6b440598093003b763f360671","isMergeCommit":false,"messageTitle":"Add Testcases to PriorityCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":1}}},{"hash":"d250cc7ffee1eb9a5ab07ab9999ae1d4d7756b1a","isMergeCommit":false,"messageTitle":"Add Testcases to PriorityCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":4}}},{"hash":"0c2f5be49051257fb6d6ce0b319bc7d2771a19e7","isMergeCommit":false,"messageTitle":"Add Testcases to ParserUtilTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":1}}},{"hash":"b4bf04b959b0c635a6f04daf1dcb26546ded9384","isMergeCommit":false,"messageTitle":"Add Testcases to PriorityCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"40cd3a9fb8abc64a0f9c3c7071fb066d26d6b9e7","isMergeCommit":true,"messageTitle":"Merge pull request #78 from xinweichong/mark-task","messageBody":"Mark tasks with completion status","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"d12e6ae8e97fe59ff1ca0b9694cac320e8ea2ba1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"06ed5fafc3a5ecd434fef9d69b28847170043cdf","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9643671728d97141ab4596d4e936f89b1c4d2f49","isMergeCommit":true,"messageTitle":"Merge branch \u0027delete-priority\u0027 into temporary test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"51495a020a712c00de3bdab784a557161f22c779","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b845b8dc535dc13afbeeb16f170be34aa2e449cc","isMergeCommit":true,"messageTitle":"Merge pull request #1 from gavinsoh/temporary","messageBody":"Bring remote up to date with latest changes","fileTypesAndContributionMap":{}},{"hash":"5d8f7e9c6625a1a5830e6fa030789f0dc9324999","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/delete-priority\u0027 into delete-priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"193dc6eed1a2559c92b4c83c63ad63ce45d54c2f","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"83de2e58dff4b8b38e76ce4b51740b647016aab1","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c9d0c60783786590cab5156149bedafbd314df77","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"xinweichong":[{"date":"2024-09-24","commitResults":[{"hash":"c8626d55ee198bd8fe4326652afe3026d9860447","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-F15-1/revert-1-tutorial-adding-command","messageBody":"Revert Gavin\u0027s \"tutorial-adding-command\"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5180f8a4257c33c9b3e176ccc5f0644d884842db","isMergeCommit":false,"messageTitle":"Edit AboutUs.md for xinweichong","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"019e94d4ce6e183a497f2d3efc44761e2b0b80ec","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5fff695c7a549e4376cf95a9b7575b1c0ea327d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21b46c48d5cf64b082400974dda49bb1d03c3519","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2b53305329274510416b172cc21982fb194edbf3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff7c27af80a392bfd16ed879b2d596e021d06469","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-xinweichong","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8e106aabbe69eabddd67be6d71e56ee19cb95b4e","isMergeCommit":false,"messageTitle":"Edit DG to update product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"15ffcf79f2c7f009f907a6fb370f7abd1111f2f2","isMergeCommit":false,"messageTitle":"Edit for final traces of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ea71866788936a3ac925017458abdbe89b8b0eb","isMergeCommit":false,"messageTitle":"Edit target user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"560b1857021a2bef227af87df2996b7e258bd735","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b0bb2ceeef40cf5a37e9bddb24c8a691781ef32c","isMergeCommit":false,"messageTitle":"Create UniqueTaskList and Task classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":0}}},{"hash":"848b49f708e6174d2075ee73950e32ee3d9ece02","isMergeCommit":false,"messageTitle":"Edit UniqueTaskList to make use of Task class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"7b0143264eb31b69e632c66d90d9484efbd0204b","isMergeCommit":false,"messageTitle":"Edit AddressBook to support UniqueTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":2}}},{"hash":"6d731e207858a994e3867f3cd8e2bade8d5f3ef6","isMergeCommit":false,"messageTitle":"Fix bugs and checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0},"test-code":{"insertions":13,"deletions":2}}},{"hash":"37dc6d1cb4055b723dbc67468b69e00a6681a0e0","isMergeCommit":false,"messageTitle":"Add tests for Task and UniqueTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":283,"deletions":1}}},{"hash":"b38065ff0889460bc65dce69023028b705b85b76","isMergeCommit":true,"messageTitle":"Merge pull request #55 from yixianggg/add-emergency-contact","messageBody":"Add emergency contact class and tests, update parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"f77e9b4057816c4b5c6f41341b525dea454cc3a2","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yixianggg/add-emergency-contact","messageBody":"Add and integrate remark class, update tests","fileTypesAndContributionMap":{}},{"hash":"e0a47346b9e8082d8d6a15f8ccbf9b9428b26c58","isMergeCommit":true,"messageTitle":"Merge pull request #57 from gavinsoh/add-priority","messageBody":"Add Priority class and tests, Update Parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"d66ffaf7101605894048a1a38c0fb22982bf53ad","isMergeCommit":false,"messageTitle":"Add PriorityCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":27,"deletions":0}}},{"hash":"96c65df374f49877fecdc5f04015904a415c4ec7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from gavinsoh/add-priority","messageBody":"Update constants in PriorityCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"77f73048ad520693e2853b38e9d326bcb8f3c1fb","isMergeCommit":false,"messageTitle":"Add status field to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0}}},{"hash":"5052d3fe8eaaa1c5f70edf5ec6aeb979f66755d2","isMergeCommit":false,"messageTitle":"Update logic to mark task as complete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":0}}},{"hash":"5dd53bda093adf0c97175a8d6c7c60f2d0196f24","isMergeCommit":false,"messageTitle":"Update UI to reflect status property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":7}}},{"hash":"e3752b2a51c35f34f996ba0769b5f2e06d66190a","isMergeCommit":false,"messageTitle":"Update test for new status property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"fb5ef6b7052ecdfd7ed0e169c7c5884af2fd7f03","isMergeCommit":false,"messageTitle":"Update tests for new classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":226,"deletions":24}}}]},{"date":"2024-10-17","commitResults":[{"hash":"97054a10cc14115f4b2db4fd77ee3228b66f4b29","isMergeCommit":true,"messageTitle":"Merge pull request #82 from gavinsoh/delete-priority","messageBody":"Add DeletePriorityCommand","fileTypesAndContributionMap":{}},{"hash":"289aed248b04b008c0c58ab78e4174f713a27f90","isMergeCommit":true,"messageTitle":"Merge pull request #84 from yixianggg/add-emergency-contact","messageBody":"Add delete functionality for emergency contact","fileTypesAndContributionMap":{}}]}],"yixianggg":[{"date":"2024-10-02","commitResults":[{"hash":"2b9492bc859f300e141f8dc3d562f10e6ee91c49","isMergeCommit":false,"messageTitle":"Update AboutUs.md for yixianggg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"22078a8245265c593e248ef59c193e7566497617","isMergeCommit":false,"messageTitle":"Update AboutUs.md for yixianggg, add in image link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"062ebb1b3a9631cf95db2f8513cbe24b3275c6ae","isMergeCommit":true,"messageTitle":"add gavin photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48e80557ca7545366c4cbf6e7375474fb4647d71","isMergeCommit":true,"messageTitle":"add benji photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"31ef01afcbb208f3506de8c46f59f4b6b093e6fc","isMergeCommit":true,"messageTitle":"add xinweichong photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1ccb5ad601a00d3c05c4d3a197c400e2b7696f9","isMergeCommit":true,"messageTitle":"add yixianggg photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d820a4fad23270595fa162cdfed4979cb9ed1b0","isMergeCommit":true,"messageTitle":"add jarrel photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"036ecf976c081b32e80a71b1e2aa279c6f1ce2ff","isMergeCommit":true,"messageTitle":"Merge pull request #32 from xinweichong/update-aboutus-xinweichong","messageBody":"Update AboutUS for xinweichong","fileTypesAndContributionMap":{}},{"hash":"25f76bd88b3a830cd4d08edda8b353dde3e7355c","isMergeCommit":true,"messageTitle":"Add xinwei about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eb783b6234bc3ca57416d21835800f15bbf97216","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yixianggg/add-about-us","messageBody":"Update AboutUs for yixianggg","fileTypesAndContributionMap":{}},{"hash":"0d60c7b2b5d5b46ce8bff9db3c55d4d3ec50c9eb","isMergeCommit":true,"messageTitle":"Merge pull request #31 from benjiBase/update-aboutus","messageBody":"Update Benjamin\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"7eb7ae2e4bd831f4644f2e3d8885801992a9639e","isMergeCommit":true,"messageTitle":"Merge pull request #41 from jarrellc1/update-aboutUs-jarrellc1","messageBody":"Update about us jarrellc1","fileTypesAndContributionMap":{}},{"hash":"30d388982ad513a1c6474193c8c5fd654e4f5073","isMergeCommit":false,"messageTitle":"Update ReadMe for NovaCare","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}},{"hash":"b4af39dde7d9f28f2d19ade9762c7887b8cb7c8d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yixianggg/update-readme","messageBody":"Update ReadMe for NovaCare","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"c61b9d02caffc8547d53f99e9d7359cfe770fb5a","isMergeCommit":false,"messageTitle":"Update ReadMe to remove traces of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"2023b66207d69b29433820716d2b0c4208eb514d","isMergeCommit":true,"messageTitle":"Merge pull request #49 from yixianggg/update-readme","messageBody":"Update ReadMe to remove traces of AB3","fileTypesAndContributionMap":{}},{"hash":"317cabfd7bcd2d7ee4337f96c3a6cb45c72884cb","isMergeCommit":true,"messageTitle":"Merge pull request #50 from xinweichong/update-dg","messageBody":"Update DG to remove traces of AB3","fileTypesAndContributionMap":{}},{"hash":"107577809b4262ea4945b1a8f411b33a51340f48","isMergeCommit":false,"messageTitle":"Add new EmergencyContactCommand class and update parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"81766d5e70d431b9ed47bd7b4f11e370af43c1af","isMergeCommit":false,"messageTitle":"Add EmergencyContactCommandTest class and update parser test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"7bf2c0bf627ec53e261f8c1d5d0fe9eef3f22a77","isMergeCommit":false,"messageTitle":"Enhance EmergencyContactCommand to accept parameters","messageBody":"EmergencyContactCommand does not accept any parameters or throw any\nexceptions.\n\nEmergencyContactCommand has to accept parameters to allow adding of\nemergency contacts.\n\nEdit EmergencyContactCommand class to accept parameters for\nemergencyContactName and emergencyContactNumber, as well as for it to\nthrow exceptions for errors.\n\nAllows for EmergencyContactCommand to be parsed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":2}}},{"hash":"40eb9e253c4eaab53c8a32430ea9b059b794d747","isMergeCommit":false,"messageTitle":"Update command and parser tests, add EmergencyContactCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":96,"deletions":4}}},{"hash":"9c20852bfe51f2f692cee32cf8efb40d9458c76b","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"9ca4f7f37f6ab75327e4b01db3e4c2d239dae283","isMergeCommit":true,"messageTitle":"Merge pull request #53 from xinweichong/create-tasklist","messageBody":"Create TaskList class","fileTypesAndContributionMap":{}},{"hash":"93e07ce55d7d3b90e7f86faa2112b9956c832e06","isMergeCommit":false,"messageTitle":"Add and integrate remark tasks, update tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":13},"test-code":{"insertions":17,"deletions":18}}},{"hash":"40af2189ad1ae430f6c6fcc92341865acc43f82a","isMergeCommit":false,"messageTitle":"Add placeholder element and modify Person to support EmergencyContact","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":10}}},{"hash":"ae42acb2a52c9efcf5d87229b4572b2eb583b470","isMergeCommit":false,"messageTitle":"Update PersonBuilder class with EmergencyContact implementation","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":1}}},{"hash":"6a90c8d81a016bb5d283de23b5ac95cb9d14ff02","isMergeCommit":false,"messageTitle":"Fix checkstyle and update toStringMethod in PersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"c718786bfac7426e29d030ed7b63a3600901f7c5","isMergeCommit":false,"messageTitle":"Update storage to incorporate emergency contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"test-code":{"insertions":25,"deletions":21}}},{"hash":"5a625e39ac8084f9b7f57338c087b3d5224c19c2","isMergeCommit":false,"messageTitle":"Update EmergencyContactCommand and parser to show contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":6},"test-code":{"insertions":72,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9c3a2737a4469e93092628a1b117c6dd27fc0586","isMergeCommit":true,"messageTitle":"Merge pull request #67 from xinweichong/create-tasklist","messageBody":"Add PriorityCommandParserTest.java","fileTypesAndContributionMap":{}},{"hash":"fff5e5d471d92db0ac0e236705d96742b8254916","isMergeCommit":false,"messageTitle":"Edit Javadoc in EmergencyContactCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-13","commitResults":[{"hash":"d609d903069c02153d979eb8d39999efef998b5e","isMergeCommit":false,"messageTitle":"Edit logic in emergency contact to prevent overriding","messageBody":"EmergencyContactCommand allows for user to override previous emergency\ncontact of Person.\n\nAdd logic in execute() method of EmergencyContactCommand to check if\nemergency contact already exists in person to be edited\n\nPrevents emergency contact to be changed through the emergency command,\nreducing possibilities of mistakes in which the index may be entered\nwrongly which would change the wrong emergency contact\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"1d309845c15ccee9d158c763d496e3bbcae84b59","isMergeCommit":false,"messageTitle":"Edit naming typos in EmergencyContactCommandTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"517ef0ae8e0876121f1e2ece9ccfeeb21c061832","isMergeCommit":false,"messageTitle":"Update emergencyContactCommand tests","messageBody":"Test cases fail due to new changes in emergencyContactCommand logic in\nwhich emergency contacts now cannot be overridden.\n\nUpdate add emergency command test case to use different Person with no\nemergency contact to begin with. Remove delete emergency contact test\nwhich will be implemented in the future along with the delete function.\nAdd new test case to test that attempts to override an emergency\ncontact results in a thrown exception.\n\nTo ensure that test cases are up to date and able to ensure the\nfunctionality of the product.\n","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":10}}},{"hash":"46e1df987f17cdb0b3b5a3982085b0b8a4573c5d","isMergeCommit":false,"messageTitle":"Add test case in EmergencyContactCommandTest to test delete message","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":8}}},{"hash":"bb14a8ab2f431cfeed203a0747dba82f3cfe6e2c","isMergeCommit":false,"messageTitle":"Edit logic in execute() method for EmergencyContactCommand","messageBody":"Current logic checks if emergency contact name field or emergency\ncontact number field is not empty, and if either is not empty it will\nthrow the override exception.\n\nBoth should be empty before disallowing the user to override the\nemergency contact.\n\nMaintains the integrity of emergency contact such that it has to have\nboth a name and number.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"1fa5f6bac846ef55de8eb32bba73af0336682380","isMergeCommit":false,"messageTitle":"Add 2 tests to EmergencyContactCommandTest class to test logic","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":2}}},{"hash":"3287a460ad27181c2de1d9a29e5e5388773d80d0","isMergeCommit":false,"messageTitle":"Edit syntax for readability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-16","commitResults":[{"hash":"0a0fc92652c227ba0742afd0ba51bc6059657433","isMergeCommit":false,"messageTitle":"Add delete emergency contact function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":0}}},{"hash":"699a87537efe83cbb2cef754291e102ec0eacf4d","isMergeCommit":false,"messageTitle":"Remove delete emergency contact in EmergencyContactCommandClass","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6}}},{"hash":"9c50a98242201e7076d3f4726286fa01a8f45a6a","isMergeCommit":false,"messageTitle":"Add tests for DeleteEmergencyContactCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":101,"deletions":0}}},{"hash":"8f5ea25986091a64f761b19027ee3e39617fa17a","isMergeCommit":false,"messageTitle":"Remove delete emergency contact test for EmergencyContactCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":1,"deletions":15}}},{"hash":"54cf38d60cc1066794829d5e4542524706193971","isMergeCommit":false,"messageTitle":"Add tests for DeleteEmergencyContactCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"78716948acf4eeaa1bd80631ddf65ed04cce7ad0","isMergeCommit":false,"messageTitle":"Fix checkstyle in DeleteTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"9510abdaa4d9cba61fe4960757ec9a18b715a67d","isMergeCommit":false,"messageTitle":"Add in DeleteEmergencyContactCommand test in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"49e57875c599dcab5a7537e9b5184066d25707f1","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"fca86a2df380c4c895bb2e965dc2e34e2fb0d6f1","isMergeCommit":true,"messageTitle":"Merge pull request #75 from jarrellc1/task-1.3","messageBody":"Update UserGuide to include new commands","fileTypesAndContributionMap":{}},{"hash":"8ea8b62124acb31e1bbf5577941f5126ef75ef05","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-emergency-contact","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7ec592893f81aa66573268c0efe2034a1739d394","isMergeCommit":true,"messageTitle":"Merge pull request #83 from benjiBase/help-command","messageBody":"Update Help command to display all our commands","fileTypesAndContributionMap":{}},{"hash":"625cd6a6001137a6d3cb0ed82d12548af29eb758","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-emergency-contact","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0167657af1da3fb4d9397926d86d26dd66b2a490","isMergeCommit":false,"messageTitle":"Edit TaskListCard to use StringBindings instead of map()","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"fb305748c4e9046de76ad5b82d9fcbec1a9549a8","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jarrellc1":{"docs":124,"functional-code":224,"test-code":198},"benjiBase":{"docs":5,"functional-code":407,"test-code":638},"gavinsoh":{"docs":12,"functional-code":466,"test-code":671},"xinweichong":{"docs":9,"functional-code":431,"test-code":524},"yixianggg":{"docs":14,"functional-code":333,"test-code":388}},"authorContributionVariance":{"jarrellc1":58908.664,"benjiBase":52348.73,"gavinsoh":75412.95,"xinweichong":18507.334,"yixianggg":9965.893},"authorDisplayNameMap":{"jarrellc1":"CS2103T-F15-1 JARR..HENG","benjiBase":"CS2103T-F15-1 LIM ..AMIN","gavinsoh":"CS2103T-F15-1 SOH ..AVIN","xinweichong":"CS2103T-F15-1 CHON.. WEI","yixianggg":"CS2103T-F15-1 CHOO..IANG"}} diff --git a/AY2425S1-CS2103T-F15-3_tp_master/authorship.json b/AY2425S1-CS2103T-F15-3_tp_master/authorship.json index 07b29d89..f27b947f 100644 --- a/AY2425S1-CS2103T-F15-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F15-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"# PROperty","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-19","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F15-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F15-3/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"* This is **a specialised address book for property agents who are fast typers**.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":" * Easily identify clients which are looking to sell their flats based on customisable tags","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":" * Manage prospective and existing customers by sorting them into different categories including housing type and income level using tags","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"* The project simulates an ongoing software project for a desktop application (called _PROperty_) used for managing contact details of the customers of property agents.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"* It is named `PROperty` because we wanted the name to resonate with property agents.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"* For the detailed documentation of this project, see the **[PROperty Product Website](https://ay2425s1-cs2103t-f15-3.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"tayxuenye":9,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg). ","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"Our aim is to create human friendly products that improve the productivity of everyday jobs. An example is our recent product, PROperty, a state of the art Address Book tailored to the intricate and fast pace needs of property agents ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vatinius"},"content":"You can reach us at the email `e1113201@u.nus.edu`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"BuffWuff1712"},"content":"### Bing Heng","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"BuffWuff1712"},"content":"\u003cimg src\u003d\"images/buffwuff1712.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"BuffWuff1712"},"content":"[[github](https://github.com/BuffWuff1712)]","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"BuffWuff1712"},"content":"* Role: Developer","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"BuffWuff1712"},"content":"### Dylan Chan","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vatinius"},"content":"\u003cimg src\u003d\"images/vatinius.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vatinius"},"content":"[[github](https://github.com/vatinius)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":"### Tay Xuen Ye","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":"\u003cimg src\u003d\"images/tayxuenye.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":"[[github](http://github.com/tayxuenye)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":"[[portfolio](team/tayxuenye.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"### Teo Kai Xiang","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":"\u003cimg src\u003d\"images/tkaixiang.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":"[[github](http://github.com/tkaixiang)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":"* Responsibilities: Full-Stack (Frontend + Backend)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"BuffWuff1712"},"content":"### Zhang Yao","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sayomaki"},"content":"\u003cimg src\u003d\"images/sayomaki.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"sayomaki"},"content":"[[github](http://github.com/sayomaki)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"sayomaki"},"content":"* Responsibilities: UI \u0026 Dev Ops","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"tayxuenye":4,"sayomaki":3,"-":41,"Vatinius":3,"BuffWuff1712":6,"Tkaixiang":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"-----------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vatinius"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Vatinius"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Vatinius"},"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/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Vatinius"},"content":"**API** : [`Logic.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"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","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Tkaixiang"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `PROpertyParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Tkaixiang"},"content":"2. 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":"2024-09-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Tkaixiang"},"content":"3. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Tkaixiang"},"content":"4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Tkaixiang"},"content":"* When called upon to parse a user command, the `PROpertyParser` 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 `PROpertyParser` returns back as a `Command` object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Vatinius"},"content":"**API** : [`Model.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Tkaixiang"},"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 `PROperty`, which `Person` references. This allows `PROperty` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Vatinius"},"content":"**API** : [`Storage.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Tkaixiang"},"content":"* inherits from both `PROpertyStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Tkaixiang"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedPROperty`. It extends `PROperty` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Tkaixiang"},"content":"* `VersionedPROperty#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Tkaixiang"},"content":"* `VersionedPROperty#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Tkaixiang"},"content":"* `VersionedPROperty#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Tkaixiang"},"content":"These operations are exposed in the `Model` interface as `Model#commitPROperty()`, `Model#undoPROperty()` and `Model#redoPROperty()` respectively.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Tkaixiang"},"content":"Step 1. The user launches the application for the first time. The `VersionedPROperty` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Tkaixiang"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitPROperty()`, 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-10-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Tkaixiang"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitPROperty()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Tkaixiang"},"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#commitPROperty()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Tkaixiang"},"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#undoPROperty()`, 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-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Tkaixiang"},"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 PROperty state, then there are no previous PROperty states to restore. The `undo` command uses `Model#canUndoPROperty()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Tkaixiang"},"content":"The `redo` command does the opposite — it calls `Model#redoPROperty()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Tkaixiang"},"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 PROperty states to restore. The `redo` command uses `Model#canRedoPROperty()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Tkaixiang"},"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#commitPROperty()`, `Model#undoPROperty()` or `Model#redoPROperty()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Tkaixiang"},"content":"Step 6. The user executes `clear`, which calls `Model#commitPROperty()`. 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":"2024-10-16","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"BuffWuff1712"},"content":"* Property Agents who type fast","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"BuffWuff1712"},"content":"Their responsibilities include managing a large list of property listings,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"BuffWuff1712"},"content":"coordinating with clients and potential buyers, conducting property viewings, negotiating deals,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"BuffWuff1712"},"content":"and handling paperwork related to real estate transactions. They are often mobile, needing quick and easy","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"BuffWuff1712"},"content":"access to information, and manage a large client and property database.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"BuffWuff1712"},"content":"**Value proposition**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"BuffWuff1712"},"content":"Agents often have difficulty keeping track of the large client and property database.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"BuffWuff1712"},"content":"Our address book allows property agents to manage prospective and existing customers by sorting them into","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"BuffWuff1712"},"content":"different categories including housing type and income level.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"BuffWuff1712"},"content":"Moreover, they can keep track of house visits via an events management system.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"BuffWuff1712"},"content":"* Allows property agents to manage prospective and existing customers easily by sorting them into different","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"BuffWuff1712"},"content":" categories such as by housing type, income level, rent/sell/buy","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"BuffWuff1712"},"content":"* Agents can sort by customer status: unresponsive,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"BuffWuff1712"},"content":"* Keep track of the various landlords who own the houses","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"BuffWuff1712"},"content":"* Easy for agent to remember who to try to sell unit to","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"BuffWuff1712"},"content":"* Events for scheduling visits to houses - reminders for agents when they open the app on any upcoming visits","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Tkaixiang"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Tkaixiang"},"content":"| -------- | --------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------- |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | add a contact with their information | view them later |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | use a search bar to find my contact | locate details without going through the entire list |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | edit current contact details | keep the details updated |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | search via tags | filter by different groups of people |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | partially fill contacts | add people who do not want to give full information |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | find contacts using their names | view their contact details easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user with many things to remember | add remarks/notes to some users | remember things when I look up their contacts |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | know some suggestions of types of tags | keep track of client preferences and interactions |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | set reminders linked to contacts | follow up with clients on time |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | have an undo feature when editing or deleting a contact | prevent accidental loss of information |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | new user | see a guide on what features there are and how to use them | know what to do with the application |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | press [TAB] to auto-complete commands | not waste time typing the full command |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | find commands by typing part of it | not have to remember exact commands |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | press [TAB] to auto-suggest attributes | not waste time typing full command |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see multiple attributes in the command box | know available commands without referring to help guide |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | press [TAB] to auto-suggest values | save time figuring out command types |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | have appropriate colour highlighting for each attribute | see what I input more easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see different colours for each attribute | classify information more easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see error messages clearly | know what went wrong with my input |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see the exact reason an error is caused | input the correct command without wasting time |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user with many contacts | tag certain contacts to show at the top | find them easily with minimal steps |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user with a busy schedule | set reminders and see upcoming events | remind myself and stay on track |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | forgetful user | quickly reuse my last searches and view search history | quickly trace back my activity |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | new user | explore all features and follow a guide | be oriented to the functionalities |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user with many different friend groups | manage all my tags | better organize my contacts |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user who likes to categorise everything | choose different colours for my tags | they don\u0027t all look the same |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | impatient user | find and sort multiple tags at once | not have to search for each tag slowly |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | sort my contacts in different ways | view contacts in different ways |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | add and customise my own tags | personalise my address book |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | link property listings to specific contacts | know who to market units to quickly |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | merge duplicate contacts | keep my address book clean and organised |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | export my contacts to a CSV file | back up or share my contact list |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Tkaixiang"},"content":"| `*` | beginner | know some suggestions of types of tag | have an idea on how to sort my customers |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | put my deleted contacts in a recycle bin | keep my contacts clean and restore them if it was an accident |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | auto-complete or suggest commands if multiple are available | complete commands more easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | use \"fuzzy searching\" when using \"find\" command | not need to remember the exact words |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many social accounts | save and link to contact social pages and media handles | connect with clients on social media easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user who changes devices often | export and import contacts on different devices easily | not save everything manually again when I change devices |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many groups of friends | know who the contacts I have put a particular tag on | organise events |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many hobbies | remove the tag for contacts easily | remove their tags if not useful anymore |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | search up other contact information other than name | find contacts based on other information |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many contacts | find and search contact besides the name | find contacts more easily with different kinds of input |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Tkaixiang"},"content":"(For all use cases below, the **System** is the `PROperty` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to add a new person by providing the person\u0027s details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty validates the input details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty adds the person to the contact list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty displays a confirmation that the person has been added.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The input details are invalid or incomplete.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message indicating the invalid fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. PROperty prompts the user to re-enter the details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Tkaixiang"},"content":"- 2b. A person with the same details already exists.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Tkaixiang"},"content":" - 2b1. PROperty informs the user that the person already exists.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Edit a person\u0027s details**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to edit details of a specific person.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays the current details of the person.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Tkaixiang"},"content":"3. User updates the desired fields.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty validates the new details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty saves the updated details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Tkaixiang"},"content":"6. PROperty confirms that the person\u0027s details have been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified person does not exist.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Tkaixiang"},"content":"- 4a. The new details are invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Tkaixiang"},"content":" - 4a1. PROperty shows an error message indicating the invalid fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Tkaixiang"},"content":" - 4a2. PROperty prompts the user to re-enter the details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Add remarks to a person**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a person to add a remark.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays an input field for the remark.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"Tkaixiang"},"content":"3. User enters the remark.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty saves the remark to the person\u0027s details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the remark has been added.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified person does not exist.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The remark is empty.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty removes the remark from the specified person.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Search for persons by tags**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to search for persons using one or more tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty filters the contact list based on the specified tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays a list of persons matching the tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"Tkaixiang"},"content":"- 1a. No tags are specified.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message prompting for at least one tag.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No persons match the specified tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that no matches were found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Manage tags**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view all existing tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a list of all tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"Tkaixiang"},"content":"3. User selects an option to add, edit, or delete tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty performs the selected action.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the tags have been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User chooses to add a new tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. User provides the tag name and optional color.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. PROperty adds the new tag.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 5.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"Tkaixiang"},"content":"- 3b. User chooses to edit an existing tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"Tkaixiang"},"content":" - 3b1. User selects the tag to edit.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"Tkaixiang"},"content":" - 3b2. User updates the tag\u0027s name or color.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"Tkaixiang"},"content":" - 3b3. PROperty saves the changes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 5.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"Tkaixiang"},"content":"- 3c. User chooses to delete a tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"Tkaixiang"},"content":" - 3c1. User selects the tag to delete.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"Tkaixiang"},"content":" - 3c2. PROperty removes the tag from all associated contacts.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 5.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"Tkaixiang"},"content":"- 3d. The tag name provided already exists (for add/edit).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"Tkaixiang"},"content":" - 3d1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set reminders linked to contacts**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a contact to set a reminder for.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty prompts the user to enter reminder details (date, time, message).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"Tkaixiang"},"content":"3. User enters the reminder details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty saves the reminder linked to the contact.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the reminder has been set.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified contact does not exist.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The reminder details are incomplete or invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message indicating the issue.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. PROperty prompts the user to re-enter the reminder details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View upcoming reminders/events**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty retrieves reminders/events sorted by date and time.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays the list of upcoming reminders/events.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"Tkaixiang"},"content":"- 2a. There are no upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that there are no upcoming reminders/events.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Undo an action**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to undo the last action.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty reverses the last action performed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty confirms that the action has been undone.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"Tkaixiang"},"content":"- 1a. There is no action to undo.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty informs the user that there is nothing to undo.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The last action cannot be undone (e.g., permanent changes).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that the action cannot be undone.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View usage instructions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view usage instructions.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays the help guide with a list of available commands and features.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The help guide fails to load.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Auto-complete commands**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"Tkaixiang"},"content":"1. User begins typing a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty suggests possible commands based on the input.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a suggested command or continues typing.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty auto-completes the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No commands match the input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty does not provide suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User does not select a suggestion and enters an invalid command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Highlight syntax and errors**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"Tkaixiang"},"content":"1. User types a command with attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty highlights different parts of the command (e.g., commands, attributes, values) in different colors.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"Tkaixiang"},"content":"3. If there\u0027s a syntax error, PROperty underlines or marks the error.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty provides real-time feedback to the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The command has multiple errors.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty highlights all errors.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View error messages with exact causes**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"Tkaixiang"},"content":"1. User executes a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty detects an error in the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays an error message clearly indicating the cause.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"Tkaixiang"},"content":"4. User reviews the error message and corrects the command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"Tkaixiang"},"content":"- 3a. Error message is too generic.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. User requests more details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. PROperty provides additional information about the error.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Sort contacts in different ways**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to sort contacts by a specific attribute (e.g., name, date added, tag).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty sorts the contact list based on the selected attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays the sorted list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified attribute is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Reuse last searches and view search history**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view search history.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a list of recent searches.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a previous search to reuse.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":740,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty performs the search and displays the results.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"Tkaixiang"},"content":"- 2a. There is no search history.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that there is no search history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":754,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Customize tags with colors**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":755,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":756,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":757,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":758,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a tag to customize.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":759,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":760,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty prompts the user to choose a color.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":761,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":762,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a color for the tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":763,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":764,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty updates the tag with the chosen color.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":765,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":766,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the tag has been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":767,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":768,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":769,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":770,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":771,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":772,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The color selected is already in use by another tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":773,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":774,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty warns the user about the duplicate color.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":775,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":776,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. User chooses to proceed or select a different color.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":777,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":778,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":779,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":780,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":781,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":782,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set and view suggestions for tags**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":783,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":784,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":785,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":786,"author":{"gitId":"Tkaixiang"},"content":"1. User requests suggestions for types of tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":787,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":788,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty analyzes existing contacts and interactions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":789,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":790,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty provides a list of suggested tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":791,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":792,"author":{"gitId":"Tkaixiang"},"content":"4. User reviews and applies relevant tags to contacts.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":793,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":794,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":795,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":796,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":797,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":798,"author":{"gitId":"Tkaixiang"},"content":"- 2a. PROperty lacks sufficient data to provide suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":799,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":800,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user and suggests manual tag creation.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":801,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":802,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":803,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":804,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":805,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":806,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View a guide on application features**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":807,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":808,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":809,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":810,"author":{"gitId":"Tkaixiang"},"content":"1. New user requests to view a guide on application features.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":811,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":812,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a comprehensive guide detailing all features and how to use them.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":813,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":814,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":815,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":816,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":817,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":818,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The guide fails to load or is unavailable.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":819,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":820,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":821,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":822,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":823,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":824,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":825,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":826,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Explore all features**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":827,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":828,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":829,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":830,"author":{"gitId":"Tkaixiang"},"content":"1. User navigates through the application\u0027s feature tour.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":831,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":832,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty guides the user step-by-step through each feature.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":833,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":834,"author":{"gitId":"Tkaixiang"},"content":"3. User interacts with the features as they are presented.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":835,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":836,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":837,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":838,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":839,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":840,"author":{"gitId":"Tkaixiang"},"content":"- 1a. User opts to skip the feature tour.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":841,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":842,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty exits the tour.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":843,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":844,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":845,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":846,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User encounters an issue during the tour.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":847,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":848,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty provides troubleshooting tips.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":849,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":850,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":851,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":852,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":853,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":854,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Find and sort multiple tags at once**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":855,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":856,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":857,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":858,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to search for contacts using multiple tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":859,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":860,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty filters contacts that match all specified tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":861,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":862,"author":{"gitId":"Tkaixiang"},"content":"3. User requests to sort the filtered contacts by a chosen attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":863,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":864,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty sorts and displays the contacts.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":865,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":866,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":867,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":868,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":869,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":870,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No contacts match all the specified tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":871,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":872,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that no contacts were found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":873,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":874,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":875,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":876,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The sorting attribute is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":877,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":878,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":879,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":880,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":881,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":882,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":883,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":884,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Press TAB to auto-suggest commands and attributes**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":885,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":886,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":887,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":888,"author":{"gitId":"Tkaixiang"},"content":"1. User begins typing a command or attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":889,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":890,"author":{"gitId":"Tkaixiang"},"content":"2. User presses the TAB key.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":891,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":892,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty auto-completes or suggests possible commands/attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":893,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":894,"author":{"gitId":"Tkaixiang"},"content":"4. User selects a suggestion or continues typing.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":895,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":896,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":897,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":898,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":899,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":900,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Multiple suggestions are available.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":901,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":902,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty displays a list of suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":903,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":904,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. User selects from the list.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":905,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":906,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":907,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":908,"author":{"gitId":"Tkaixiang"},"content":"- 2b. No suggestions are available.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":909,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":910,"author":{"gitId":"Tkaixiang"},"content":" - 2b1. PROperty does not auto-complete.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":911,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":912,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":913,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":914,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":915,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":916,"author":{"gitId":"Tkaixiang"},"content":"**Use case: See multiple attributes in the command box**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":917,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":918,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":919,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":920,"author":{"gitId":"Tkaixiang"},"content":"1. User initiates a command that requires multiple attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":921,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":922,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays placeholders or prompts for each required attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":923,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":924,"author":{"gitId":"Tkaixiang"},"content":"3. User fills in the attributes as guided.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":925,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":926,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty executes the command with the provided attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":927,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":928,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":929,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":930,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":931,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":932,"author":{"gitId":"Tkaixiang"},"content":"- 2a. User skips an attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":933,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":934,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty prompts the user to fill in the missing attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":935,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":936,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":937,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":938,"author":{"gitId":"Tkaixiang"},"content":"- 3a. An attribute value is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":939,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":940,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message indicating the invalid attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":941,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":942,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. User corrects the attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":943,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":944,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":945,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":946,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":947,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":948,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Have appropriate color highlighting for attributes**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":949,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":950,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":951,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":952,"author":{"gitId":"Tkaixiang"},"content":"1. User types a command with attributes in the command box.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":953,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":954,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty highlights each attribute and its value in different colors.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":955,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":956,"author":{"gitId":"Tkaixiang"},"content":"3. User easily identifies each part of the command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":957,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":958,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":959,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":960,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":961,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":962,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The color scheme is not suitable for the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":963,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":964,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. User adjusts the color settings in preferences.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":965,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":966,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":967,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":968,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":969,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":970,"author":{"gitId":"Tkaixiang"},"content":"**Use case: See error messages clearly**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":971,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":972,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":973,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":974,"author":{"gitId":"Tkaixiang"},"content":"1. User executes a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":975,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":976,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty detects an error.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":977,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":978,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays the error message prominently and clearly.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":979,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":980,"author":{"gitId":"Tkaixiang"},"content":"4. User reads the error message and takes corrective action.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":981,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":982,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":983,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":984,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":985,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":986,"author":{"gitId":"Tkaixiang"},"content":"- 3a. Error message overlaps with other interface elements.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":987,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":988,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty adjusts the layout to ensure visibility.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":989,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":990,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":991,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":992,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":993,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":994,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Tag certain contacts to show at the top**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":995,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":996,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":997,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":998,"author":{"gitId":"Tkaixiang"},"content":"1. User selects contacts to prioritize.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":999,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1000,"author":{"gitId":"Tkaixiang"},"content":"2. User tags them with a special tag (e.g., \"Favorite\").","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1001,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1002,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty adjusts the contact list to display tagged contacts at the top.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1003,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1004,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1005,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1006,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1007,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1008,"author":{"gitId":"Tkaixiang"},"content":"- 2a. User wants to prioritize multiple tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1009,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1010,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty allows setting priority levels for tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1011,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1012,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1013,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1014,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1015,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1016,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Manage multiple customer groups**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1017,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1018,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1019,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1020,"author":{"gitId":"Tkaixiang"},"content":"1. User creates tags for different customer groups.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1021,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1022,"author":{"gitId":"Tkaixiang"},"content":"2. User assigns contacts to these tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1023,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1024,"author":{"gitId":"Tkaixiang"},"content":"3. User filters or views contacts based on these tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1025,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1026,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1027,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1028,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1029,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1030,"author":{"gitId":"Tkaixiang"},"content":"- 1a. User attempts to create a duplicate tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1031,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1032,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty informs the user and prevents duplication.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1033,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1034,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1035,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1036,"author":{"gitId":"Tkaixiang"},"content":"- 2a. User wants to assign a contact to multiple groups.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1037,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1038,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty allows multiple tags per contact.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1039,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1040,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1041,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1042,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1043,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1044,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set and see upcoming appointments**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1045,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1046,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1047,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1048,"author":{"gitId":"Tkaixiang"},"content":"1. User adds appointments linked to contacts or tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1049,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1050,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty saves the appointments with dates and times.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1051,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1052,"author":{"gitId":"Tkaixiang"},"content":"3. User requests to view upcoming events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1053,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1054,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty displays events in chronological order.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1055,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1056,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1057,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1058,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1059,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1060,"author":{"gitId":"Tkaixiang"},"content":"- 1a. Event details are incomplete.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1061,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1062,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty prompts the user to complete all required fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1063,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1064,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1065,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1066,"author":{"gitId":"Tkaixiang"},"content":"- 3a. No upcoming events are scheduled.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1067,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1068,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1069,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1070,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1071,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1072,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1073,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1074,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Find commands by typing part of it**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1075,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1076,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1077,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1078,"author":{"gitId":"Tkaixiang"},"content":"1. User types a partial command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1079,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1080,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty searches for commands matching the input.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1081,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1082,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty suggests possible commands.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1083,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1084,"author":{"gitId":"Tkaixiang"},"content":"4. User selects a command from the suggestions.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1085,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1086,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1087,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1088,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1089,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1090,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No commands match the partial input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1091,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1092,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user and suggests using the help guide.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1093,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1094,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1095,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1096,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1097,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1098,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Press TAB to auto-suggest values**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1099,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1100,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1101,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1102,"author":{"gitId":"Tkaixiang"},"content":"1. User types a command requiring specific values (e.g., tag names).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1103,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1104,"author":{"gitId":"Tkaixiang"},"content":"2. User presses TAB key.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1105,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1106,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty suggests existing values that match the input.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1107,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1108,"author":{"gitId":"Tkaixiang"},"content":"4. User selects a value from the suggestions.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1109,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1110,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1111,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1112,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1113,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1114,"author":{"gitId":"Tkaixiang"},"content":"- 3a. No values match the input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1115,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1116,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty does not provide suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1117,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1118,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1119,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1120,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1121,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1122,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Reuse last searches and view search history**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1123,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1124,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1125,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1126,"author":{"gitId":"Tkaixiang"},"content":"1. User accesses the search history feature.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1127,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1128,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a list of recent searches.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1129,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1130,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a previous search.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1131,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1132,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty executes the search and displays results.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1133,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1134,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1135,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1136,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1137,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1138,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Search history is empty.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1139,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1140,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1141,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1142,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1143,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1144,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1145,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1146,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Remove tags from contacts easily**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1147,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1148,"author":{"gitId":"sayomaki"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1149,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1150,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a contact to modify tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1151,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1152,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays current tags associated with the contact.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1153,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1154,"author":{"gitId":"Tkaixiang"},"content":"3. User deselects or removes unwanted tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1155,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1156,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty updates the contact\u0027s tag list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1157,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1158,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the tags have been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1159,"author":{"gitId":"sayomaki"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1160,"author":{"gitId":"sayomaki"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1161,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1162,"author":{"gitId":"sayomaki"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1163,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1164,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Contact has no tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1165,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1166,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1167,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1168,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1169,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1170,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1171,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1172,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View multiple attributes in the command box**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1173,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1174,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1175,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1176,"author":{"gitId":"Tkaixiang"},"content":"1. User starts typing a command that accepts multiple attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1177,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1178,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a dynamic template showing all possible attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1179,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1180,"author":{"gitId":"Tkaixiang"},"content":"3. User fills in the attributes as needed.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1181,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1182,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty validates and executes the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1183,"author":{"gitId":"sayomaki"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1184,"author":{"gitId":"sayomaki"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1185,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1186,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1187,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1188,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User skips optional attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1189,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1190,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty proceeds with the provided attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1191,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1192,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1193,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1194,"author":{"gitId":"Tkaixiang"},"content":"- 4a. Required attributes are missing.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1195,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1196,"author":{"gitId":"Tkaixiang"},"content":" - 4a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1197,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1198,"author":{"gitId":"Tkaixiang"},"content":" - 4a2. User adds the missing attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1199,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1200,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1201,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1202,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1203,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1204,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set reminders and see upcoming events**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1205,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1206,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1207,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1208,"author":{"gitId":"Tkaixiang"},"content":"1. User sets a reminder or schedules an event linked to a contact.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1209,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1210,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty saves the reminder/event details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1211,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1212,"author":{"gitId":"Tkaixiang"},"content":"3. User requests to view upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1213,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1214,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty displays a chronological list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1215,"author":{"gitId":"sayomaki"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1216,"author":{"gitId":"sayomaki"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1217,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1218,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1219,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1220,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Reminder/event details are invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1221,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1222,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1223,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1224,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. User corrects the details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1225,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1226,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1227,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1228,"author":{"gitId":"Tkaixiang"},"content":"- 3a. No upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1229,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1230,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1231,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1232,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1234,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1236,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":1237,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1238,"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","isFullCredit":false},{"lineNumber":1239,"author":{"gitId":"Tkaixiang"},"content":"4. Should work on any screen size from (`13\u0027` laptop screens to `32\u0027` widescreen monitors)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1240,"author":{"gitId":"Tkaixiang"},"content":"5. Should reliably store contact information across different sessions with minimal chance of corruption","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1241,"author":{"gitId":"Tkaixiang"},"content":"6. Should not contain any vulnerabilities, protect user data and ensure system integrity","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1242,"author":{"gitId":"Tkaixiang"},"content":"7. Should be easy to maintain for developers to add new features and exensions in the future","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1243,"author":{"gitId":"Tkaixiang"},"content":"8. Should have good contrast between colours to allow people to read text and information more easily","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1245,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1247,"author":{"gitId":"Tkaixiang"},"content":"- **Auto-complete**: A feature that predicts and completes the rest of a word or command as the user types, often activated by pressing the `TAB` key.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1248,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1249,"author":{"gitId":"Tkaixiang"},"content":"- **Fuzzy Searching**: A search technique that finds approximate matches to the search terms, allowing users to find results without needing exact matches.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1250,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1251,"author":{"gitId":"Tkaixiang"},"content":"- **Recycle Bin**: A temporary storage area for deleted contacts, allowing users to restore them if they were deleted accidentally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1252,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1253,"author":{"gitId":"Tkaixiang"},"content":"- **Reminder/Event**: A scheduled notification linked to a contact, alerting the user of upcoming tasks, appointments, or follow-ups.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1254,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1255,"author":{"gitId":"Tkaixiang"},"content":"- **Social Media Handles**: Usernames or profile links associated with a person\u0027s social media accounts.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1256,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1257,"author":{"gitId":"Tkaixiang"},"content":"- **Syntax Highlighting**: A feature that displays commands in different colors to differentiate between commands, attributes, and values for easier readability.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1258,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1259,"author":{"gitId":"Tkaixiang"},"content":"- **Tag**: A label assigned to a contact to categorize or group contacts for better organization.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1260,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1261,"author":{"gitId":"Tkaixiang"},"content":"- **Undo Feature**: A function that allows the user to reverse the last action taken, preventing accidental loss or changes to information.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1262,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1263,"author":{"gitId":"Tkaixiang"},"content":"- **Attribute Placeholder**: A prompt or template shown in the command box that indicates where the user should input specific information in a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1264,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1265,"author":{"gitId":"Tkaixiang"},"content":"- **Contact**: An entry in the PROperty representing a person, including their personal and professional information.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1266,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1267,"author":{"gitId":"Tkaixiang"},"content":"- **Reminder/Event List**: A chronological list displaying upcoming reminders or events set by the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1268,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1269,"author":{"gitId":"Tkaixiang"},"content":"- **Search History**: A record of previous search queries entered by the user, allowing for quick reuse of past searches.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1270,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1271,"author":{"gitId":"Tkaixiang"},"content":"- **Highlighting Errors**: Visual cues provided by the application (such as underlines or color changes) to indicate mistakes in command input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1272,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1273,"author":{"gitId":"Tkaixiang"},"content":"- **Attribute Placeholder**: A visual guide in the command box showing the required and optional attributes for a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1274,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1275,"author":{"gitId":"Tkaixiang"},"content":"- **Priority Tagging**: The act of marking certain contacts to appear at the top of the contact list for quick access.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1277,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1279,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1281,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1283,"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","isFullCredit":false},{"lineNumber":1284,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1286,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1288,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1290,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1291,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1292,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1293,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1294,"author":{"gitId":"Tkaixiang"},"content":" 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1296,"author":{"gitId":"Tkaixiang"},"content":"2. Saving window preferences","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1297,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1298,"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","isFullCredit":false},{"lineNumber":1299,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1300,"author":{"gitId":"Tkaixiang"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1301,"author":{"gitId":"Vatinius"},"content":" ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":1302,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1304,"author":{"gitId":"Tkaixiang"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1306,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1308,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1309,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1310,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1311,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1312,"author":{"gitId":"Tkaixiang"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1313,"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","isFullCredit":false},{"lineNumber":1314,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1315,"author":{"gitId":"Tkaixiang"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1316,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1317,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1318,"author":{"gitId":"Tkaixiang"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1319,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1321,"author":{"gitId":"Tkaixiang"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1323,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1325,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1326,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1327,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1329,"author":{"gitId":"Tkaixiang"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"sayomaki":16,"-":331,"Vatinius":8,"BuffWuff1712":16,"Tkaixiang":958}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Documentation guide","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"**Setting up and maintaining the project website:**","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation.","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"* The `docs/` folder is used for documentation.","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html).","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"* Note these points when adapting the documentation to a different project/product:","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The \u0027Site-wide settings\u0027 section of the page linked above has information on how to update site-wide elements such as the top navigation bar.","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vatinius"},"content":" * :bulb: In addition to updating content files, you might have to update the config files `docs\\_config.yml` and `docs\\_sass\\minima\\_base.scss` (which contains a reference to `PROperty` that comes into play when converting documentation pages to PDF format).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are using Intellij for editing documentation files, you can consider enabling \u0027soft wrapping\u0027 for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping)","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html)","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"**Diagrams:**","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html)","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"**Converting a document to the PDF format:**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html)","lastModifiedDate":"2020-06-07","isFullCredit":false}],"authorContributionMap":{"-":28,"Vatinius":1}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"PROperty is a **desktop app for property agents managing contacts and their property listings,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vatinius"},"content":"optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vatinius"},"content":"If you can type fast, PROperty can get your contact and property management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"2. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"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","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"BuffWuff1712"},"content":"Format: `add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG] [r/REMARKS]…​`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"BuffWuff1712"},"content":"* NAME and PHONE NUMBER fields must be provided.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"BuffWuff1712"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/looking for HDB`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"BuffWuff1712"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Flatbush Avenue, block 81, #02-02 p/1234567 t/Condominium`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"sayomaki"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG] [dt/TAG] [r/REMARK]…​`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"sayomaki"},"content":"* When editing tags, the tags specified using `t/` will be added to the contact (cumulatively).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"sayomaki"},"content":"* Tags can also be removed using the delete tag `dt/` prefix, followed by the tag name.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"tayxuenye"},"content":"### Locating persons by tag: `findtag`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"tayxuenye"},"content":"Finds persons whose tags contain any of the given words.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"tayxuenye"},"content":"Format: `findtag TAG [MORE_TAGS]`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"tayxuenye"},"content":"- The search is case-insensitive. e.g., `HDB` will match `hdb`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"tayxuenye"},"content":"- The order of the tags does not matter.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"tayxuenye"},"content":"- Persons with at least one matching tag will be returned (i.e., an `OR` search).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"tayxuenye"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tayxuenye"},"content":"- `findtag HDB` returns persons tagged with `HDB`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tayxuenye"},"content":"- `findtag HDB colleague` returns persons tagged with either `HDB` or `colleague`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Vatinius"},"content":"### Quick reference help: `help`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Vatinius"},"content":"Shows commands in a help menu for quick reference during use of PROperty.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Vatinius"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"Vatinius"},"content":"Format: `help`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Tkaixiang"},"content":"### Managing Remarks : `remark`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"Tkaixiang"},"content":"Adds/removes a remark from a person in PROperty.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Tkaixiang"},"content":"Format: `remark INDEX r/[REMARKS]`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Tkaixiang"},"content":"- Adds a remark `REMARKS` to the person at `INDEX`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Tkaixiang"},"content":"- The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Tkaixiang"},"content":"- The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Tkaixiang"},"content":"- **Note:** `[REMARKS]` will **delete the remark if left blank**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"Tkaixiang"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Tkaixiang"},"content":"- `remark 1 r/Prefers a higher floor apartment`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Tkaixiang"},"content":" - Adds a remark \"Prefers a higher floor apartment\" to the person at index `1`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"Tkaixiang"},"content":"- `remark 1 r/`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"Tkaixiang"},"content":" - Deletes the remark of person at index `1`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"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","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":210,"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","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":213,"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","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"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","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":232,"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","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Tkaixiang"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Tkaixiang"},"content":"| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Tkaixiang"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG] [r/REMARKS]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Tkaixiang"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Tkaixiang"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Tkaixiang"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG] [r/REMARKS]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Tkaixiang"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"tayxuenye"},"content":"| **Findtag**| `findtag TAG [MORE_TAGS]`\u003cbr\u003e e.g., `findtag friend colleague` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Tkaixiang"},"content":"| **List** | `list` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Tkaixiang"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Tkaixiang"},"content":"| **Remark** | `remark INDEX r/[REMARKS]` |","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"tayxuenye":16,"sayomaki":3,"-":170,"Vatinius":11,"BuffWuff1712":5,"Tkaixiang":44}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"sayomaki"},"content":"title: \"PROperty\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sayomaki"},"content":"repository: \"AY2425S1-CS2103T-F15-3/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vatinius"},"content":"title: PROperty","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"[//]: # ([![CI Status]\u0026#40;https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg\u0026#41;]\u0026#40;https://github.com/se-edu/addressbook-level3/actions\u0026#41;)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vatinius"},"content":"[//]: # ([![codecov]\u0026#40;https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg\u0026#41;]\u0026#40;https://codecov.io/gh/se-edu/addressbook-level3\u0026#41;)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vatinius"},"content":"[//]: # (The commented out section is not relevent to PROperty. However, I do not know how to properly change the links such that it reflect PROperty\u0027s content. Hence, I have left it commented out for future reference.)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vatinius"},"content":"**PROperty is a desktop application for managing your property listings and client\u0027s contact details.**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vatinius"},"content":"While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"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","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"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","isFullCredit":false}],"authorContributionMap":{"-":15,"Vatinius":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getName().toString(), \"\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getPhone().toString(), \"; Phone: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getEmail().toString(), \"; Email: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getAddress().toString(), \"; Address: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"BuffWuff1712"},"content":" if (!person.getTags().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"BuffWuff1712"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"BuffWuff1712"},"content":" person.getTags().forEach(tag -\u003e builder.append(tag).append(\" \"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"BuffWuff1712"},"content":" builder.setLength(builder.length() - 1); // Remove trailing space","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":" appendIfNotEmpty(builder, person.getRemark().toString(), \"; Remark: \");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"BuffWuff1712"},"content":" return builder.toString().trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"BuffWuff1712"},"content":" private static void appendIfNotEmpty(StringBuilder builder, String value, String prefix) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"BuffWuff1712"},"content":" if (value !\u003d null \u0026\u0026 !value.isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"BuffWuff1712"},"content":" builder.append(prefix).append(value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":41,"BuffWuff1712":19,"Tkaixiang":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vatinius"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"BuffWuff1712"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"BuffWuff1712"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]...\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" + PREFIX_REMARK + \"Loves large houses\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":79,"Vatinius":1,"BuffWuff1712":2,"Tkaixiang":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sayomaki"},"content":" + \"[\" + PREFIX_TAG + \"ADD_TAG] \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"sayomaki"},"content":" + \"[\" + PREFIX_DELETE_TAG + \"DELETE_TAG] \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]...\\n\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"sayomaki"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.computeTags(personToEdit.getTags());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Tkaixiang"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Tkaixiang"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedRemark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"sayomaki"},"content":" private Set\u003cTag\u003e addTags;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"sayomaki"},"content":" private Set\u003cTag\u003e deleteTags;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Tkaixiang"},"content":" private Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"sayomaki"},"content":" setAddTags(toCopy.addTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"sayomaki"},"content":" setDeleteTags(toCopy.deleteTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Tkaixiang"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"sayomaki"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, addTags, deleteTags, remark);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"Tkaixiang"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Tkaixiang"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Tkaixiang"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"sayomaki"},"content":" public void setAddTags(Set\u003cTag\u003e addTags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"sayomaki"},"content":" this.addTags \u003d (addTags !\u003d null) ? new HashSet\u003c\u003e(addTags) : null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"sayomaki"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getAddTags() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"sayomaki"},"content":" return (addTags !\u003d null) ? Optional.of(Collections.unmodifiableSet(addTags)) : Optional.empty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"sayomaki"},"content":" public void setDeleteTags(Set\u003cTag\u003e deleteTags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"sayomaki"},"content":" this.deleteTags \u003d (deleteTags !\u003d null) ? new HashSet\u003c\u003e(deleteTags) : null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"sayomaki"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getDeleteTags() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"sayomaki"},"content":" return (deleteTags !\u003d null) ? Optional.of(Collections.unmodifiableSet(deleteTags)) : Optional.empty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"sayomaki"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"sayomaki"},"content":" * Computes the updated set of tags for {@code personToEdit} with given tag list,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"sayomaki"},"content":" * and returns an unmodifiable tag set.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"sayomaki"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"sayomaki"},"content":" public Set\u003cTag\u003e computeTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"sayomaki"},"content":" Optional\u003cSet\u003cTag\u003e\u003e addTags \u003d getAddTags();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"sayomaki"},"content":" if (addTags.isPresent() \u0026\u0026 addTags.get().isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"sayomaki"},"content":" // empty add tags set, which means to remove all tags","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"sayomaki"},"content":" return Collections.emptySet();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"sayomaki"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"sayomaki"},"content":" addTags.ifPresent(newTags::addAll);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"sayomaki"},"content":" getDeleteTags().ifPresent(newTags::removeAll); // ignores tag silently if tag to be deleted not found","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"sayomaki"},"content":" return Collections.unmodifiableSet(newTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"sayomaki"},"content":" \u0026\u0026 Objects.equals(addTags, otherEditPersonDescriptor.addTags)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"sayomaki"},"content":" \u0026\u0026 Objects.equals(deleteTags, otherEditPersonDescriptor.deleteTags)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Tkaixiang"},"content":" \u0026\u0026 Objects.equals(remark, otherEditPersonDescriptor.remark);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"sayomaki"},"content":" .add(\"add-tags\", addTags)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"sayomaki"},"content":" .add(\"delete-tags\", deleteTags)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Tkaixiang"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"sayomaki":41,"-":232,"Tkaixiang":17}},{"path":"src/main/java/seedu/address/logic/commands/FindTagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":" * Finds and lists all persons in address book whose tags match the specified tags.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":" * Tag matching is case-insensitive.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"// Solution structure inspired by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommand extends Command {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":" public static final String COMMAND_WORD \u003d \"findtag\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose tags match any of the \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":" + \"specified tag names (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":" + \"Parameters: TAG [MORE_TAGS]...\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":" + \"Example: \" + COMMAND_WORD + \" friend family colleague\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" //Suggested by ChatGPT as a way of checking whether tag exists in the Person","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public FindTagCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tayxuenye"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tayxuenye"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tayxuenye"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tayxuenye"},"content":" if (!(other instanceof FindTagCommand)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tayxuenye"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand otherFindTagCommand \u003d (FindTagCommand) other;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tayxuenye"},"content":" return predicate.equals(otherFindTagCommand.predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tayxuenye"},"content":" public String toString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tayxuenye"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tayxuenye"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tayxuenye"},"content":" .toString();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":56,"-":8}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" + \": Edits or adds a remark to the customer identified \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" + \"by the index number passed into INDEX parameter. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" + \"r/ Prefers a high-rise unit.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_EDIT_REMARK_SUCCESS \u003d \"Edited remark to Person: %1$s\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" private final Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" this.index \u003d index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Tkaixiang"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Tkaixiang"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Tkaixiang"},"content":" personToEdit.getAddress(), personToEdit.getTags(), remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Tkaixiang"},"content":" String message;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Tkaixiang"},"content":" if (remark.value.isEmpty()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":" message \u003d MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Tkaixiang"},"content":" } else if (!personToEdit.getRemark().value.isEmpty()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Tkaixiang"},"content":" message \u003d MESSAGE_EDIT_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Tkaixiang"},"content":" } else {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" message \u003d MESSAGE_ADD_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Tkaixiang"},"content":" return new CommandResult(generateSuccessMessage(editedPerson, message));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Tkaixiang"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Tkaixiang"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Tkaixiang"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Tkaixiang"},"content":" private String generateSuccessMessage(Person personToEdit, String message) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Tkaixiang"},"content":" return String.format(message, Messages.format(personToEdit));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Tkaixiang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Tkaixiang"},"content":" return true;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Tkaixiang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Tkaixiang"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Tkaixiang"},"content":" return false;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Tkaixiang"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Tkaixiang"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":101}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"BuffWuff1712"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"BuffWuff1712"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"BuffWuff1712"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":56,"BuffWuff1712":3,"Tkaixiang":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.commands.FindTagCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tayxuenye"},"content":" case FindTagCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tayxuenye"},"content":" return new FindTagCommandParser().parse(arguments);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Tkaixiang"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"tayxuenye":3,"-":86,"Tkaixiang":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"sayomaki"},"content":" public static final Prefix PREFIX_DELETE_TAG \u003d new Prefix(\"dt/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"sayomaki":1,"-":15,"Tkaixiang":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"sayomaki"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"sayomaki"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_DELETE_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_REMARK);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"sayomaki"},"content":" parseAddTags(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setAddTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"sayomaki"},"content":" parseDeleteTags(argMultimap.getAllValues(PREFIX_DELETE_TAG))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"sayomaki"},"content":" .ifPresent(editPersonDescriptor::setDeleteTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Tkaixiang"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Tkaixiang"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"sayomaki"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseAddTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"sayomaki"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseDeleteTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"sayomaki"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"sayomaki"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"sayomaki"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"sayomaki"},"content":" return Optional.of(ParserUtil.parseTags(tags));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"sayomaki":16,"-":81,"Tkaixiang":6}},{"path":"src/main/java/seedu/address/logic/parser/FindTagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.commands.FindTagCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":" * Parses input arguments and creates a new FindTagCommand object","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"// Solution structure inspired by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommandParser implements Parser\u003cFindTagCommand\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagCommand","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":" * and returns a FindTagCommand object for execution.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":" public FindTagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tayxuenye"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tayxuenye"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Written by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Split the input by spaces to get the tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagsToMatch \u003d Stream.of(trimmedArgs.split(\"\\\\s+\"))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new FindTagCommand(new TagContainsKeywordsPredicate(tagsToMatch));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":33,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"BuffWuff1712"},"content":" if (trimmedAddress.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"BuffWuff1712"},"content":" return new Address(\"\"); // Allow empty address","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"BuffWuff1712"},"content":" if (trimmedEmail.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"BuffWuff1712"},"content":" return new Email(\"\"); // Allow empty email","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Tkaixiang"},"content":" * Parses a {@code String remark} into an {@code Remark}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Tkaixiang"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Tkaixiang"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Tkaixiang"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Tkaixiang"},"content":" public static Remark parseRemark(String remark) throws ParseException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Tkaixiang"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Tkaixiang"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Tkaixiang"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":124,"BuffWuff1712":8,"Tkaixiang":13}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":" * Parses input arguments and creates a new RemarkCommand object.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" * Parses the given {@code String} of arguments in the context of the RemarkCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" * and returns a RemarkCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" requireNonNull(args);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" try {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" Remark remark \u003d new Remark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":44}},{"path":"src/main/java/seedu/address/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"BuffWuff1712"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":64,"BuffWuff1712":1}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"BuffWuff1712"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":78,"BuffWuff1712":1}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" public Person(Name name, Phone phone, Email email,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" Address address, Set\u003cTag\u003e tags, Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Tkaixiang"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" return remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"BuffWuff1712"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"BuffWuff1712"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Tkaixiang"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":115,"BuffWuff1712":2,"Tkaixiang":9}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":" * Represents a Remark of a person in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":" * Guarantees: immutable","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"public class Remark {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":" public final String value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":" * Constructs an {@code Remark}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":" * @param remark A valid address.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" value \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" public String toString() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" return value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" return true;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" return false;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" Remark otherAddress \u003d (Remark) other;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":50}},{"path":"src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches any of the tags given.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"// Solution structure inspired by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"public class TagContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":" private final Set\u003cTag\u003e tagsToMatch;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":" public TagContainsKeywordsPredicate(Set\u003cTag\u003e tagsToMatch) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":" this.tagsToMatch \u003d tagsToMatch;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Written by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" return person.getTags().stream()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" .anyMatch(personTag -\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" tagsToMatch.stream().anyMatch(tag -\u003e tag.tagName.equalsIgnoreCase(personTag.tagName)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tayxuenye"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tayxuenye"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":" if (!(other instanceof TagContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate otherTagContainsKeywordsPredicate \u003d (TagContainsKeywordsPredicate) other;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":" return tagsToMatch.equals(otherTagContainsKeywordsPredicate.tagsToMatch);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tayxuenye"},"content":" public String toString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tayxuenye"},"content":" return new ToStringBuilder(this).add(\"tagsToMatch\", tagsToMatch).toString();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":43,"-":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"friends\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"colleagues\", \"friends\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"neighbours\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"family\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"classmates\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"colleagues\"), new Remark(\"A Remark\"))","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"Tkaixiang":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" private final String remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Tkaixiang"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Tkaixiang"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Tkaixiang"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Tkaixiang"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelRemark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"Tkaixiang":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_INTRO \u003d \"Below are some basic instructions to get started using PROperty!\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_ADD_COMMAND \u003d \"Add Command \\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vatinius"},"content":" + \"- Format: add n/NAME p/NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG] [r/REMARK]\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Vatinius"},"content":" + \"- Example: add n/John Doe p/12345678 t/Student\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Vatinius"},"content":" + \"- Items in the [square brackets] are optional and can be input in any order!\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_EDIT_COMMAND \u003d \"Edit Command \\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"sayomaki"},"content":" + \"- Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG] [dt/TAG] [r/REMARK]\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"sayomaki"},"content":" + \"- Example: edit 1 p/87654321 t/Tutor dt/Student\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vatinius"},"content":" + \"- INDEX is the index of the customer displayed. Items in the [square brackets] are optional\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"sayomaki"},"content":" + \" and can be input in any order! TAG can be both a tag to be added or removed, depending on\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"sayomaki"},"content":" + \" the prefix for the item.\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_DELETE_COMMAND \u003d \"Delete Command\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vatinius"},"content":" + \"- Format: delete INDEX\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vatinius"},"content":" + \"- Example: delete 1\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vatinius"},"content":" + \"- INDEX is the index of the customer displayed.\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_LIST_COMMAND \u003d \"List Command\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vatinius"},"content":" + \"- Format: list\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vatinius"},"content":" + \"- Example: list\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_FIND_COMMAND \u003d \"Find Command\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Vatinius"},"content":" + \"- Format: find KEYWORDS [MORE_KEYWORDS]\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Vatinius"},"content":" + \"- Example: find John Doe\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vatinius"},"content":" + \"- Only names can be searched; Only full words will be matched. \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vatinius"},"content":" + \"The command is case insensitive. When more than one keyword is used,\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Vatinius"},"content":" + \" persons matching at least one keyword will be returned.\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_FINDTAG_COMMAND \u003d \"Findtag Command\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vatinius"},"content":" + \"- Format: findtag TAG [MORE_TAGS]\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Vatinius"},"content":" + \"- Example: findtag HDB Condo\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":" + \"- Tags are case insensitive.\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":" + \"- Items in the [square brackets] are optional. Persons with at least one matching tag will be returned.\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" private static final String HELP_REMARK_COMMAND \u003d \"Remark Command\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" + \"- Format: remark INDEX r/[REMARKS]\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" + \"- Example: remark 1 r/Prefers high rise apartments\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" + \"- Items in the [square brackets] are optional.\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" + \"- If [REMARKS] is left blank, the remark will be deleted from the specified Person at INDEX.\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_EXIT_COMMAND \u003d \"Exit Command\\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Vatinius"},"content":" + \"- Format: exit\\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Vatinius"},"content":" + \"- Example: exit\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_MORE_INFORMATION \u003d \"For more detailed information,\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"sayomaki"},"content":" + \" visit the PROperty User Guide at: https://ay2425s1-cs2103t-f15-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_MESSAGE \u003d HELP_INTRO","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Vatinius"},"content":" + HELP_ADD_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vatinius"},"content":" + HELP_EDIT_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Vatinius"},"content":" + HELP_DELETE_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Vatinius"},"content":" + HELP_LIST_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Vatinius"},"content":" + HELP_FIND_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Vatinius"},"content":" + HELP_FINDTAG_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Tkaixiang"},"content":" + HELP_REMARK_COMMAND","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Tkaixiang"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Vatinius"},"content":" + HELP_EXIT_COMMAND","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Vatinius"},"content":" + HELP_MORE_INFORMATION;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Vatinius"},"content":" private static final double DEFAULT_WIDTH \u003d 800;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Vatinius"},"content":" private static final double DEFAULT_HEIGHT \u003d 650;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Vatinius"},"content":" private static final double MIN_WIDTH \u003d 800;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Vatinius"},"content":" private static final double MIN_HEIGHT \u003d 700;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" private Text helpMessage;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Vatinius"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Vatinius"},"content":" setWindowDefaultSize(root);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Vatinius"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Vatinius"},"content":" * Sets the default size of the window.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Vatinius"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Vatinius"},"content":" private void setWindowDefaultSize(Stage root) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Vatinius"},"content":" root.setWidth(DEFAULT_WIDTH);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Vatinius"},"content":" root.setHeight(DEFAULT_HEIGHT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Vatinius"},"content":" root.setMinWidth(MIN_WIDTH);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Vatinius"},"content":" root.setMinHeight(MIN_HEIGHT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Vatinius"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"tayxuenye":3,"sayomaki":5,"-":83,"Vatinius":64,"Tkaixiang":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" @FXML","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" private Label remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":" String remarkValue \u003d person.getRemark().value;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" if (remarkValue !\u003d null \u0026\u0026 !remarkValue.trim().isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" remark.setText(remarkValue);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Tkaixiang"},"content":" remark.setManaged(true);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Tkaixiang"},"content":" } else {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":" remark.setManaged(false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":59,"Tkaixiang":10}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Tkaixiang"},"content":".remark {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Tkaixiang"},"content":" -fx-text-fill: #cbd5e1 !important;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Tkaixiang"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"-":352,"Tkaixiang":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vatinius"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vatinius"},"content":"\u003cfx:root title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/22\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vatinius"},"content":" \u003cScrollPane fitToHeight\u003d\"true\" fitToWidth\u003d\"true\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vatinius"},"content":" \u003cVBox fx:id\u003d\"helpMessageContainer\" alignment\u003d\"TOP_LEFT\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" \u003cText fx:id\u003d\"helpMessage\" wrappingWidth\u003d\"600\" fill\u003d\"WHITE\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vatinius"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Vatinius"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vatinius"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" \u003c/Text\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vatinius"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vatinius"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false}],"authorContributionMap":{"-":21,"Vatinius":10,"Tkaixiang":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"\u003c?import java.lang.String?\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/22\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" \u003cLabel fx:id\u003d\"remark\" text\u003d\"\\$remark\"\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" \u003cstyleClass\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" \u003cString fx:value\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" \u003cString fx:value\u003d\"remark\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" \u003c/styleClass\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":32,"Tkaixiang":16}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"sayomaki"},"content":" public static final String INVALID_DELETE_TAG_DESC \u003d \" \" + PREFIX_DELETE_TAG + \"chubby*\"; // \u0027*\u0027 not allowed","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" // The issue here is that since a default person does not specify the remark field, it will be left untouched","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" // Hence, we need to add the remark field of the \"TypicalPersons\" (index\u003d0) to show that it is unedited","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder().withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"-":183,"Tkaixiang":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"sayomaki"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", add-tags\u003d\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"sayomaki"},"content":" + editPersonDescriptor.getAddTags().orElse(null) + \", delete-tags\u003d\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"sayomaki"},"content":" + editPersonDescriptor.getDeleteTags().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \"}\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":3,"-":69,"Tkaixiang":1}},{"path":"src/test/java/seedu/address/logic/commands/FindTagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tayxuenye"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTagCommand}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommandTest {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":" public void equals() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e firstTag \u003d new HashSet\u003c\u003e(Collections.singletonList(new Tag(\"friend\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e secondTag \u003d new HashSet\u003c\u003e(Collections.singletonList(new Tag(\"colleague\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate firstPredicate \u003d new TagContainsKeywordsPredicate(firstTag);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate secondPredicate \u003d new TagContainsKeywordsPredicate(secondTag);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findFirstCommand \u003d new FindTagCommand(firstPredicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findSecondCommand \u003d new FindTagCommand(secondPredicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tayxuenye"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findFirstCommandCopy \u003d new FindTagCommand(firstPredicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tayxuenye"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tayxuenye"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tayxuenye"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tayxuenye"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tayxuenye"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tayxuenye"},"content":" // different command -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tayxuenye"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tayxuenye"},"content":" public void execute_zeroTags_noPersonFound() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tayxuenye"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d preparePredicate(\"\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand command \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tayxuenye"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tayxuenye"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tayxuenye"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tayxuenye"},"content":" public void execute_singleTag_multiplePersonsFound() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tayxuenye"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d preparePredicate(\"friends\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand command \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tayxuenye"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tayxuenye"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tayxuenye"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tayxuenye"},"content":" public void execute_multipleTags_multiplePersonsFound() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tayxuenye"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d preparePredicate(\"friends owesMoney\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand command \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"tayxuenye"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"tayxuenye"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"tayxuenye"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"tayxuenye"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"friend\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findTagCommand \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"tayxuenye"},"content":" String expected \u003d FindTagCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"tayxuenye"},"content":" assertEquals(expected, findTagCommand.toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Solution by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code TagContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" private TagContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!userInput.trim().isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Arrays.stream(userInput.split(\"\\\\s+\")).forEach(tagName -\u003e tags.add(new Tag(tagName)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new TagContainsKeywordsPredicate(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":100,"-":13}},{"path":"src/test/java/seedu/address/logic/commands/RemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.RemarkCommand.MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.RemarkCommand.MESSAGE_EDIT_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommandTest {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" public void execute_validAddRemark() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" final Remark remark \u003d new Remark(\"Some remark\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(remark.toString()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" String expectedMessage \u003d String.format(MESSAGE_ADD_REMARK_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" assertCommandSuccess(new RemarkCommand(INDEX_THIRD_PERSON, remark), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" public void execute_validEditRemark() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" final Remark remark \u003d new Remark(\"Some remark\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(remark.toString()).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" String expectedMessage \u003d String.format(MESSAGE_EDIT_REMARK_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":" assertCommandSuccess(new RemarkCommand(INDEX_FIRST_PERSON, remark), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Tkaixiang"},"content":" public void execute_emptyRemark() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Tkaixiang"},"content":" final Remark remark \u003d new Remark(\"\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Tkaixiang"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(remark.toString()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Tkaixiang"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_REMARK_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Tkaixiang"},"content":" assertCommandSuccess(new RemarkCommand(INDEX_FIRST_PERSON, remark), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":70}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Tkaixiang"},"content":" public void parseCommand_remark() throws Exception {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Tkaixiang"},"content":" assertTrue(parser.parseCommand(RemarkCommand.COMMAND_WORD + \" 1 r/ hello world!\") instanceof RemarkCommand);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"-":101,"Tkaixiang":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DELETE_TAG_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"sayomaki"},"content":" private static final String DELETE_TAG_EMPTY \u003d \" \" + PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"sayomaki"},"content":" assertParseFailure(parser, \"1\" + INVALID_DELETE_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"sayomaki"},"content":" // parsing {@code PREFIX_DELETE_TAG} with empty tag should fail unlike {@code PREFIX_TAG} which resets the tags","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"sayomaki"},"content":" assertParseFailure(parser, \"1\" + DELETE_TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"sayomaki"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + DELETE_TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"sayomaki":8,"-":206}},{"path":"src/test/java/seedu/address/logic/parser/FindTagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.commands.FindTagCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommandParserTest {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":" private FindTagCommandParser parser \u003d new FindTagCommandParser();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" public void parse_validArgs_returnsFindTagCommand() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e expectedTags \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"friend\"), new Tag(\"family\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand expectedFindTagCommand \u003d new FindTagCommand(new TagContainsKeywordsPredicate(expectedTags));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tayxuenye"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":" assertParseSuccess(parser, \"friend family\", expectedFindTagCommand);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":" assertParseSuccess(parser, \" \\n friend \\n \\t family \\t\", expectedFindTagCommand);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":39}},{"path":"src/test/java/seedu/address/logic/parser/RemarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommandParserTest {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":" private final RemarkCommandParser parser \u003d new RemarkCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":" private final Remark randomRemark \u003d new Remark(\"random remark!\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":" private final Remark specialRemark \u003d new Remark(\"needs 2 toilets/requires 2 room;//!@#$%^\u0026*()\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" // valid remark with valid index","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_REMARK + randomRemark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand expectedCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, randomRemark);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" // valid remark with \"/r\" and slightly weirder characters","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" String userInput2 \u003d targetIndex.getOneBased() + \" \" + PREFIX_REMARK + specialRemark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand expectedCommand2 \u003d new RemarkCommand(INDEX_FIRST_PERSON, specialRemark);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" assertParseSuccess(parser, userInput2, expectedCommand2);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" // empty remark with valid index","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_REMARK;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" expectedCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, new Remark(\"\"));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" String failureMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemarkCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" // no parameters","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" assertParseFailure(parser, RemarkCommand.COMMAND_WORD, failureMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" // no index","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" assertParseFailure(parser, RemarkCommand.COMMAND_WORD + \" \" + randomRemark, failureMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":51}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"BuffWuff1712"},"content":" // same name and phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"BuffWuff1712"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Tkaixiang"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Tkaixiang"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \"}\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":96,"BuffWuff1712":2,"Tkaixiang":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Tkaixiang"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":" null, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"Tkaixiang":16}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sayomaki"},"content":" descriptor.setAddTags(person.getTags());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"sayomaki"},"content":" descriptor.setAddTags(tagSet);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":85}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" private Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" remark \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Tkaixiang"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Tkaixiang"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Tkaixiang"},"content":" return this;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Tkaixiang"},"content":" return new Person(name, phone, email, address, tags, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"Tkaixiang":13}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"sayomaki"},"content":" if (descriptor.getAddTags().isPresent()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"sayomaki"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getAddTags().get();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":60}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":" .withTags(\"friends\").withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" .withTags(\"owesMoney\", \"friends\").withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" .withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" .withEmail(\"hans@example.com\").withRemark(\"remark for this person :D\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Tkaixiang"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Tkaixiang"},"content":" DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":70,"Tkaixiang":8}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"# PROperty","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-19","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F15-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F15-3/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"* This is **a specialised address book for property agents who are fast typers**.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":" * Easily identify clients which are looking to sell their flats based on customisable tags","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":" * Manage prospective and existing customers by sorting them into different categories including housing type and income level using tags","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"* The project simulates an ongoing software project for a desktop application (called _PROperty_) used for managing contact details of the customers of property agents.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"* It is named `PROperty` because we wanted the name to resonate with property agents.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"* For the detailed documentation of this project, see the **[PROperty Product Website](https://ay2425s1-cs2103t-f15-3.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"tayxuenye":9,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg). ","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"Our aim is to create human friendly products that improve the productivity of everyday jobs. An example is our recent product, PROperty, a state of the art Address Book tailored to the intricate and fast pace needs of property agents ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vatinius"},"content":"You can reach us at the email `e1113201@u.nus.edu`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"BuffWuff1712"},"content":"### Bing Heng","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"BuffWuff1712"},"content":"\u003cimg src\u003d\"images/buffwuff1712.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"BuffWuff1712"},"content":"[[github](https://github.com/BuffWuff1712)]","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"BuffWuff1712"},"content":"* Role: Developer","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"BuffWuff1712"},"content":"### Dylan Chan","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vatinius"},"content":"\u003cimg src\u003d\"images/vatinius.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vatinius"},"content":"[[github](https://github.com/vatinius)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":"### Tay Xuen Ye","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":"\u003cimg src\u003d\"images/tayxuenye.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":"[[github](http://github.com/tayxuenye)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":"[[portfolio](team/tayxuenye.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"### Teo Kai Xiang","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":"\u003cimg src\u003d\"images/tkaixiang.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":"[[github](http://github.com/tkaixiang)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":"* Responsibilities: Full-Stack (Frontend + Backend)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"BuffWuff1712"},"content":"### Zhang Yao","lastModifiedDate":"2024-09-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"sayomaki"},"content":"\u003cimg src\u003d\"images/sayomaki.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"sayomaki"},"content":"[[github](http://github.com/sayomaki)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"sayomaki"},"content":"* Responsibilities: UI \u0026 Dev Ops","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"tayxuenye":4,"sayomaki":3,"-":41,"Vatinius":3,"BuffWuff1712":6,"Tkaixiang":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"-----------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vatinius"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"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","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"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","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Vatinius"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"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","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Vatinius"},"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/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Vatinius"},"content":"**API** : [`Logic.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"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","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Tkaixiang"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `PROpertyParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Tkaixiang"},"content":"2. 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":"2024-09-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Tkaixiang"},"content":"3. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Tkaixiang"},"content":"4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"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","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Tkaixiang"},"content":"* When called upon to parse a user command, the `PROpertyParser` 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 `PROpertyParser` returns back as a `Command` object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Vatinius"},"content":"**API** : [`Model.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Tkaixiang"},"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 `PROperty`, which `Person` references. This allows `PROperty` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Vatinius"},"content":"**API** : [`Storage.java`](https://github.com/AY2425S1-CS2103T-F15-3/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Tkaixiang"},"content":"* inherits from both `PROpertyStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Tkaixiang"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedPROperty`. It extends `PROperty` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Tkaixiang"},"content":"* `VersionedPROperty#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Tkaixiang"},"content":"* `VersionedPROperty#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Tkaixiang"},"content":"* `VersionedPROperty#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Tkaixiang"},"content":"These operations are exposed in the `Model` interface as `Model#commitPROperty()`, `Model#undoPROperty()` and `Model#redoPROperty()` respectively.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Tkaixiang"},"content":"Step 1. The user launches the application for the first time. The `VersionedPROperty` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Tkaixiang"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitPROperty()`, 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-10-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Tkaixiang"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitPROperty()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Tkaixiang"},"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#commitPROperty()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Tkaixiang"},"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#undoPROperty()`, 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-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Tkaixiang"},"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 PROperty state, then there are no previous PROperty states to restore. The `undo` command uses `Model#canUndoPROperty()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Tkaixiang"},"content":"The `redo` command does the opposite — it calls `Model#redoPROperty()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Tkaixiang"},"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 PROperty states to restore. The `redo` command uses `Model#canRedoPROperty()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Tkaixiang"},"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#commitPROperty()`, `Model#undoPROperty()` or `Model#redoPROperty()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Tkaixiang"},"content":"Step 6. The user executes `clear`, which calls `Model#commitPROperty()`. 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":"2024-10-16","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"BuffWuff1712"},"content":"* Property Agents who type fast","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"BuffWuff1712"},"content":"Their responsibilities include managing a large list of property listings,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"BuffWuff1712"},"content":"coordinating with clients and potential buyers, conducting property viewings, negotiating deals,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"BuffWuff1712"},"content":"and handling paperwork related to real estate transactions. They are often mobile, needing quick and easy","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"BuffWuff1712"},"content":"access to information, and manage a large client and property database.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"BuffWuff1712"},"content":"**Value proposition**:","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"BuffWuff1712"},"content":"Agents often have difficulty keeping track of the large client and property database.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"BuffWuff1712"},"content":"Our address book allows property agents to manage prospective and existing customers by sorting them into","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"BuffWuff1712"},"content":"different categories including housing type and income level.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"BuffWuff1712"},"content":"Moreover, they can keep track of house visits via an events management system.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"BuffWuff1712"},"content":"* Allows property agents to manage prospective and existing customers easily by sorting them into different","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"BuffWuff1712"},"content":" categories such as by housing type, income level, rent/sell/buy","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"BuffWuff1712"},"content":"* Agents can sort by customer status: unresponsive,","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"BuffWuff1712"},"content":"* Keep track of the various landlords who own the houses","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"BuffWuff1712"},"content":"* Easy for agent to remember who to try to sell unit to","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"BuffWuff1712"},"content":"* Events for scheduling visits to houses - reminders for agents when they open the app on any upcoming visits","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Tkaixiang"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Tkaixiang"},"content":"| -------- | --------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------- |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | add a contact with their information | view them later |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | use a search bar to find my contact | locate details without going through the entire list |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | edit current contact details | keep the details updated |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | search via tags | filter by different groups of people |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | partially fill contacts | add people who do not want to give full information |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user | find contacts using their names | view their contact details easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Tkaixiang"},"content":"| `* * *` | user with many things to remember | add remarks/notes to some users | remember things when I look up their contacts |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | know some suggestions of types of tags | keep track of client preferences and interactions |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | set reminders linked to contacts | follow up with clients on time |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | have an undo feature when editing or deleting a contact | prevent accidental loss of information |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | new user | see a guide on what features there are and how to use them | know what to do with the application |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | press [TAB] to auto-complete commands | not waste time typing the full command |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | find commands by typing part of it | not have to remember exact commands |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | press [TAB] to auto-suggest attributes | not waste time typing full command |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see multiple attributes in the command box | know available commands without referring to help guide |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | press [TAB] to auto-suggest values | save time figuring out command types |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | have appropriate colour highlighting for each attribute | see what I input more easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see different colours for each attribute | classify information more easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see error messages clearly | know what went wrong with my input |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | see the exact reason an error is caused | input the correct command without wasting time |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user with many contacts | tag certain contacts to show at the top | find them easily with minimal steps |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user with a busy schedule | set reminders and see upcoming events | remind myself and stay on track |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | forgetful user | quickly reuse my last searches and view search history | quickly trace back my activity |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | new user | explore all features and follow a guide | be oriented to the functionalities |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user with many different friend groups | manage all my tags | better organize my contacts |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user who likes to categorise everything | choose different colours for my tags | they don\u0027t all look the same |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | impatient user | find and sort multiple tags at once | not have to search for each tag slowly |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | sort my contacts in different ways | view contacts in different ways |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | add and customise my own tags | personalise my address book |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Tkaixiang"},"content":"| `* *` | user | link property listings to specific contacts | know who to market units to quickly |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | merge duplicate contacts | keep my address book clean and organised |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | export my contacts to a CSV file | back up or share my contact list |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Tkaixiang"},"content":"| `*` | beginner | know some suggestions of types of tag | have an idea on how to sort my customers |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | put my deleted contacts in a recycle bin | keep my contacts clean and restore them if it was an accident |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | auto-complete or suggest commands if multiple are available | complete commands more easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | use \"fuzzy searching\" when using \"find\" command | not need to remember the exact words |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many social accounts | save and link to contact social pages and media handles | connect with clients on social media easily |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user who changes devices often | export and import contacts on different devices easily | not save everything manually again when I change devices |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many groups of friends | know who the contacts I have put a particular tag on | organise events |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many hobbies | remove the tag for contacts easily | remove their tags if not useful anymore |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user | search up other contact information other than name | find contacts based on other information |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Tkaixiang"},"content":"| `*` | user with many contacts | find and search contact besides the name | find contacts more easily with different kinds of input |","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Tkaixiang"},"content":"(For all use cases below, the **System** is the `PROperty` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to add a new person by providing the person\u0027s details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty validates the input details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty adds the person to the contact list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty displays a confirmation that the person has been added.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The input details are invalid or incomplete.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message indicating the invalid fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. PROperty prompts the user to re-enter the details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Tkaixiang"},"content":"- 2b. A person with the same details already exists.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Tkaixiang"},"content":" - 2b1. PROperty informs the user that the person already exists.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Edit a person\u0027s details**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to edit details of a specific person.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays the current details of the person.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Tkaixiang"},"content":"3. User updates the desired fields.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty validates the new details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty saves the updated details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Tkaixiang"},"content":"6. PROperty confirms that the person\u0027s details have been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified person does not exist.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Tkaixiang"},"content":"- 4a. The new details are invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Tkaixiang"},"content":" - 4a1. PROperty shows an error message indicating the invalid fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Tkaixiang"},"content":" - 4a2. PROperty prompts the user to re-enter the details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Add remarks to a person**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a person to add a remark.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays an input field for the remark.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"Tkaixiang"},"content":"3. User enters the remark.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty saves the remark to the person\u0027s details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the remark has been added.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified person does not exist.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The remark is empty.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty removes the remark from the specified person.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Search for persons by tags**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to search for persons using one or more tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty filters the contact list based on the specified tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays a list of persons matching the tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"Tkaixiang"},"content":"- 1a. No tags are specified.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message prompting for at least one tag.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No persons match the specified tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that no matches were found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Manage tags**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view all existing tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a list of all tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"Tkaixiang"},"content":"3. User selects an option to add, edit, or delete tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty performs the selected action.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the tags have been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User chooses to add a new tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. User provides the tag name and optional color.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. PROperty adds the new tag.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 5.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"Tkaixiang"},"content":"- 3b. User chooses to edit an existing tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"Tkaixiang"},"content":" - 3b1. User selects the tag to edit.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"Tkaixiang"},"content":" - 3b2. User updates the tag\u0027s name or color.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"Tkaixiang"},"content":" - 3b3. PROperty saves the changes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 5.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"Tkaixiang"},"content":"- 3c. User chooses to delete a tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"Tkaixiang"},"content":" - 3c1. User selects the tag to delete.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"Tkaixiang"},"content":" - 3c2. PROperty removes the tag from all associated contacts.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 5.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"Tkaixiang"},"content":"- 3d. The tag name provided already exists (for add/edit).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"Tkaixiang"},"content":" - 3d1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set reminders linked to contacts**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a contact to set a reminder for.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty prompts the user to enter reminder details (date, time, message).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"Tkaixiang"},"content":"3. User enters the reminder details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty saves the reminder linked to the contact.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the reminder has been set.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified contact does not exist.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The reminder details are incomplete or invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message indicating the issue.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. PROperty prompts the user to re-enter the reminder details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View upcoming reminders/events**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty retrieves reminders/events sorted by date and time.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays the list of upcoming reminders/events.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"Tkaixiang"},"content":"- 2a. There are no upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that there are no upcoming reminders/events.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Undo an action**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to undo the last action.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty reverses the last action performed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty confirms that the action has been undone.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"Tkaixiang"},"content":"- 1a. There is no action to undo.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty informs the user that there is nothing to undo.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The last action cannot be undone (e.g., permanent changes).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that the action cannot be undone.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View usage instructions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view usage instructions.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays the help guide with a list of available commands and features.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The help guide fails to load.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Auto-complete commands**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"Tkaixiang"},"content":"1. User begins typing a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty suggests possible commands based on the input.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a suggested command or continues typing.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty auto-completes the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No commands match the input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty does not provide suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User does not select a suggestion and enters an invalid command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Highlight syntax and errors**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"Tkaixiang"},"content":"1. User types a command with attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty highlights different parts of the command (e.g., commands, attributes, values) in different colors.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"Tkaixiang"},"content":"3. If there\u0027s a syntax error, PROperty underlines or marks the error.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty provides real-time feedback to the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The command has multiple errors.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty highlights all errors.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View error messages with exact causes**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"Tkaixiang"},"content":"1. User executes a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty detects an error in the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays an error message clearly indicating the cause.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"Tkaixiang"},"content":"4. User reviews the error message and corrects the command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"Tkaixiang"},"content":"- 3a. Error message is too generic.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. User requests more details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. PROperty provides additional information about the error.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Sort contacts in different ways**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to sort contacts by a specific attribute (e.g., name, date added, tag).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty sorts the contact list based on the selected attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays the sorted list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"Tkaixiang"},"content":"- 1a. The specified attribute is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Reuse last searches and view search history**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to view search history.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a list of recent searches.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a previous search to reuse.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":740,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty performs the search and displays the results.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"Tkaixiang"},"content":"- 2a. There is no search history.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that there is no search history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":754,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Customize tags with colors**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":755,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":756,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":757,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":758,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a tag to customize.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":759,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":760,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty prompts the user to choose a color.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":761,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":762,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a color for the tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":763,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":764,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty updates the tag with the chosen color.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":765,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":766,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the tag has been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":767,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":768,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":769,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":770,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":771,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":772,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The color selected is already in use by another tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":773,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":774,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty warns the user about the duplicate color.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":775,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":776,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. User chooses to proceed or select a different color.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":777,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":778,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":779,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":780,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":781,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":782,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set and view suggestions for tags**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":783,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":784,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":785,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":786,"author":{"gitId":"Tkaixiang"},"content":"1. User requests suggestions for types of tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":787,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":788,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty analyzes existing contacts and interactions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":789,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":790,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty provides a list of suggested tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":791,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":792,"author":{"gitId":"Tkaixiang"},"content":"4. User reviews and applies relevant tags to contacts.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":793,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":794,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":795,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":796,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":797,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":798,"author":{"gitId":"Tkaixiang"},"content":"- 2a. PROperty lacks sufficient data to provide suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":799,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":800,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user and suggests manual tag creation.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":801,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":802,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":803,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":804,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":805,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":806,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View a guide on application features**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":807,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":808,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":809,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":810,"author":{"gitId":"Tkaixiang"},"content":"1. New user requests to view a guide on application features.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":811,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":812,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a comprehensive guide detailing all features and how to use them.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":813,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":814,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":815,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":816,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":817,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":818,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The guide fails to load or is unavailable.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":819,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":820,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":821,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":822,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":823,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":824,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":825,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":826,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Explore all features**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":827,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":828,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":829,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":830,"author":{"gitId":"Tkaixiang"},"content":"1. User navigates through the application\u0027s feature tour.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":831,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":832,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty guides the user step-by-step through each feature.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":833,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":834,"author":{"gitId":"Tkaixiang"},"content":"3. User interacts with the features as they are presented.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":835,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":836,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":837,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":838,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":839,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":840,"author":{"gitId":"Tkaixiang"},"content":"- 1a. User opts to skip the feature tour.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":841,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":842,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty exits the tour.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":843,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":844,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":845,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":846,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User encounters an issue during the tour.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":847,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":848,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty provides troubleshooting tips.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":849,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":850,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":851,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":852,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":853,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":854,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Find and sort multiple tags at once**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":855,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":856,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":857,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":858,"author":{"gitId":"Tkaixiang"},"content":"1. User requests to search for contacts using multiple tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":859,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":860,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty filters contacts that match all specified tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":861,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":862,"author":{"gitId":"Tkaixiang"},"content":"3. User requests to sort the filtered contacts by a chosen attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":863,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":864,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty sorts and displays the contacts.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":865,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":866,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":867,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":868,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":869,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":870,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No contacts match all the specified tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":871,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":872,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user that no contacts were found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":873,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":874,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":875,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":876,"author":{"gitId":"Tkaixiang"},"content":"- 3a. The sorting attribute is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":877,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":878,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":879,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":880,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":881,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":882,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":883,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":884,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Press TAB to auto-suggest commands and attributes**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":885,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":886,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":887,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":888,"author":{"gitId":"Tkaixiang"},"content":"1. User begins typing a command or attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":889,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":890,"author":{"gitId":"Tkaixiang"},"content":"2. User presses the TAB key.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":891,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":892,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty auto-completes or suggests possible commands/attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":893,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":894,"author":{"gitId":"Tkaixiang"},"content":"4. User selects a suggestion or continues typing.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":895,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":896,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":897,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":898,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":899,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":900,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Multiple suggestions are available.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":901,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":902,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty displays a list of suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":903,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":904,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. User selects from the list.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":905,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":906,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":907,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":908,"author":{"gitId":"Tkaixiang"},"content":"- 2b. No suggestions are available.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":909,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":910,"author":{"gitId":"Tkaixiang"},"content":" - 2b1. PROperty does not auto-complete.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":911,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":912,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":913,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":914,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":915,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":916,"author":{"gitId":"Tkaixiang"},"content":"**Use case: See multiple attributes in the command box**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":917,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":918,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":919,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":920,"author":{"gitId":"Tkaixiang"},"content":"1. User initiates a command that requires multiple attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":921,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":922,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays placeholders or prompts for each required attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":923,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":924,"author":{"gitId":"Tkaixiang"},"content":"3. User fills in the attributes as guided.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":925,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":926,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty executes the command with the provided attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":927,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":928,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":929,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":930,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":931,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":932,"author":{"gitId":"Tkaixiang"},"content":"- 2a. User skips an attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":933,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":934,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty prompts the user to fill in the missing attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":935,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":936,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":937,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":938,"author":{"gitId":"Tkaixiang"},"content":"- 3a. An attribute value is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":939,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":940,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty shows an error message indicating the invalid attribute.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":941,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":942,"author":{"gitId":"Tkaixiang"},"content":" - 3a2. User corrects the attribute.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":943,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":944,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":945,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":946,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":947,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":948,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Have appropriate color highlighting for attributes**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":949,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":950,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":951,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":952,"author":{"gitId":"Tkaixiang"},"content":"1. User types a command with attributes in the command box.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":953,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":954,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty highlights each attribute and its value in different colors.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":955,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":956,"author":{"gitId":"Tkaixiang"},"content":"3. User easily identifies each part of the command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":957,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":958,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":959,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":960,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":961,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":962,"author":{"gitId":"Tkaixiang"},"content":"- 2a. The color scheme is not suitable for the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":963,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":964,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. User adjusts the color settings in preferences.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":965,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":966,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":967,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":968,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":969,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":970,"author":{"gitId":"Tkaixiang"},"content":"**Use case: See error messages clearly**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":971,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":972,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":973,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":974,"author":{"gitId":"Tkaixiang"},"content":"1. User executes a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":975,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":976,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty detects an error.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":977,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":978,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty displays the error message prominently and clearly.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":979,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":980,"author":{"gitId":"Tkaixiang"},"content":"4. User reads the error message and takes corrective action.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":981,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":982,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":983,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":984,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":985,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":986,"author":{"gitId":"Tkaixiang"},"content":"- 3a. Error message overlaps with other interface elements.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":987,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":988,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty adjusts the layout to ensure visibility.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":989,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":990,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":991,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":992,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":993,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":994,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Tag certain contacts to show at the top**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":995,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":996,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":997,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":998,"author":{"gitId":"Tkaixiang"},"content":"1. User selects contacts to prioritize.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":999,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1000,"author":{"gitId":"Tkaixiang"},"content":"2. User tags them with a special tag (e.g., \"Favorite\").","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1001,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1002,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty adjusts the contact list to display tagged contacts at the top.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1003,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1004,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1005,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1006,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1007,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1008,"author":{"gitId":"Tkaixiang"},"content":"- 2a. User wants to prioritize multiple tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1009,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1010,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty allows setting priority levels for tags.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1011,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1012,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1013,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1014,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1015,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1016,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Manage multiple customer groups**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1017,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1018,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1019,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1020,"author":{"gitId":"Tkaixiang"},"content":"1. User creates tags for different customer groups.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1021,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1022,"author":{"gitId":"Tkaixiang"},"content":"2. User assigns contacts to these tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1023,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1024,"author":{"gitId":"Tkaixiang"},"content":"3. User filters or views contacts based on these tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1025,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1026,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1027,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1028,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1029,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1030,"author":{"gitId":"Tkaixiang"},"content":"- 1a. User attempts to create a duplicate tag.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1031,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1032,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty informs the user and prevents duplication.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1033,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1034,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1035,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1036,"author":{"gitId":"Tkaixiang"},"content":"- 2a. User wants to assign a contact to multiple groups.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1037,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1038,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty allows multiple tags per contact.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1039,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1040,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1041,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1042,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1043,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1044,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set and see upcoming appointments**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1045,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1046,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1047,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1048,"author":{"gitId":"Tkaixiang"},"content":"1. User adds appointments linked to contacts or tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1049,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1050,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty saves the appointments with dates and times.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1051,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1052,"author":{"gitId":"Tkaixiang"},"content":"3. User requests to view upcoming events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1053,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1054,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty displays events in chronological order.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1055,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1056,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1057,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1058,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1059,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1060,"author":{"gitId":"Tkaixiang"},"content":"- 1a. Event details are incomplete.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1061,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1062,"author":{"gitId":"Tkaixiang"},"content":" - 1a1. PROperty prompts the user to complete all required fields.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1063,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1064,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1065,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1066,"author":{"gitId":"Tkaixiang"},"content":"- 3a. No upcoming events are scheduled.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1067,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1068,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1069,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1070,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1071,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1072,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1073,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1074,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Find commands by typing part of it**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1075,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1076,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1077,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1078,"author":{"gitId":"Tkaixiang"},"content":"1. User types a partial command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1079,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1080,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty searches for commands matching the input.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1081,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1082,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty suggests possible commands.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1083,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1084,"author":{"gitId":"Tkaixiang"},"content":"4. User selects a command from the suggestions.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1085,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1086,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1087,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1088,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1089,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1090,"author":{"gitId":"Tkaixiang"},"content":"- 2a. No commands match the partial input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1091,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1092,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user and suggests using the help guide.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1093,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1094,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1095,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1096,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1097,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1098,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Press TAB to auto-suggest values**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1099,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1100,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1101,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1102,"author":{"gitId":"Tkaixiang"},"content":"1. User types a command requiring specific values (e.g., tag names).","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1103,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1104,"author":{"gitId":"Tkaixiang"},"content":"2. User presses TAB key.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1105,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1106,"author":{"gitId":"Tkaixiang"},"content":"3. PROperty suggests existing values that match the input.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1107,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1108,"author":{"gitId":"Tkaixiang"},"content":"4. User selects a value from the suggestions.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1109,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1110,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1111,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1112,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1113,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1114,"author":{"gitId":"Tkaixiang"},"content":"- 3a. No values match the input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1115,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1116,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty does not provide suggestions.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1117,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1118,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1119,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1120,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1121,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1122,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Reuse last searches and view search history**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1123,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1124,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1125,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1126,"author":{"gitId":"Tkaixiang"},"content":"1. User accesses the search history feature.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1127,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1128,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a list of recent searches.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1129,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1130,"author":{"gitId":"Tkaixiang"},"content":"3. User selects a previous search.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1131,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1132,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty executes the search and displays results.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1133,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1134,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1135,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1136,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1137,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1138,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Search history is empty.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1139,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1140,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1141,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1142,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1143,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1144,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1145,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1146,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Remove tags from contacts easily**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1147,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1148,"author":{"gitId":"sayomaki"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1149,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1150,"author":{"gitId":"Tkaixiang"},"content":"1. User selects a contact to modify tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1151,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1152,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays current tags associated with the contact.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1153,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1154,"author":{"gitId":"Tkaixiang"},"content":"3. User deselects or removes unwanted tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1155,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1156,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty updates the contact\u0027s tag list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1157,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1158,"author":{"gitId":"Tkaixiang"},"content":"5. PROperty confirms that the tags have been updated.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1159,"author":{"gitId":"sayomaki"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1160,"author":{"gitId":"sayomaki"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1161,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1162,"author":{"gitId":"sayomaki"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1163,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1164,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Contact has no tags.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1165,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1166,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1167,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1168,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1169,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1170,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1171,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1172,"author":{"gitId":"Tkaixiang"},"content":"**Use case: View multiple attributes in the command box**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1173,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1174,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1175,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1176,"author":{"gitId":"Tkaixiang"},"content":"1. User starts typing a command that accepts multiple attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1177,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1178,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty displays a dynamic template showing all possible attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1179,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1180,"author":{"gitId":"Tkaixiang"},"content":"3. User fills in the attributes as needed.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1181,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1182,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty validates and executes the command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1183,"author":{"gitId":"sayomaki"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1184,"author":{"gitId":"sayomaki"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1185,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1186,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1187,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1188,"author":{"gitId":"Tkaixiang"},"content":"- 3a. User skips optional attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1189,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1190,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty proceeds with the provided attributes.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1191,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1192,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1193,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1194,"author":{"gitId":"Tkaixiang"},"content":"- 4a. Required attributes are missing.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1195,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1196,"author":{"gitId":"Tkaixiang"},"content":" - 4a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1197,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1198,"author":{"gitId":"Tkaixiang"},"content":" - 4a2. User adds the missing attributes.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1199,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1200,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1201,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1202,"author":{"gitId":"Tkaixiang"},"content":"---","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1203,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1204,"author":{"gitId":"Tkaixiang"},"content":"**Use case: Set reminders and see upcoming events**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1205,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1206,"author":{"gitId":"Tkaixiang"},"content":"**MSS**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1207,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1208,"author":{"gitId":"Tkaixiang"},"content":"1. User sets a reminder or schedules an event linked to a contact.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1209,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1210,"author":{"gitId":"Tkaixiang"},"content":"2. PROperty saves the reminder/event details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1211,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1212,"author":{"gitId":"Tkaixiang"},"content":"3. User requests to view upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1213,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1214,"author":{"gitId":"Tkaixiang"},"content":"4. PROperty displays a chronological list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1215,"author":{"gitId":"sayomaki"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1216,"author":{"gitId":"sayomaki"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1217,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":1218,"author":{"gitId":"Tkaixiang"},"content":"**Extensions**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1219,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1220,"author":{"gitId":"Tkaixiang"},"content":"- 2a. Reminder/event details are invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1221,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1222,"author":{"gitId":"Tkaixiang"},"content":" - 2a1. PROperty shows an error message.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1223,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1224,"author":{"gitId":"Tkaixiang"},"content":" - 2a2. User corrects the details.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1225,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1226,"author":{"gitId":"Tkaixiang"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1227,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1228,"author":{"gitId":"Tkaixiang"},"content":"- 3a. No upcoming reminders/events.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1229,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1230,"author":{"gitId":"Tkaixiang"},"content":" - 3a1. PROperty informs the user.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1231,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1232,"author":{"gitId":"Tkaixiang"},"content":" Use case ends.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1234,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1236,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":1237,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1238,"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","isFullCredit":false},{"lineNumber":1239,"author":{"gitId":"Tkaixiang"},"content":"4. Should work on any screen size from (`13\u0027` laptop screens to `32\u0027` widescreen monitors)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1240,"author":{"gitId":"Tkaixiang"},"content":"5. Should reliably store contact information across different sessions with minimal chance of corruption","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1241,"author":{"gitId":"Tkaixiang"},"content":"6. Should not contain any vulnerabilities, protect user data and ensure system integrity","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1242,"author":{"gitId":"Tkaixiang"},"content":"7. Should be easy to maintain for developers to add new features and exensions in the future","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1243,"author":{"gitId":"Tkaixiang"},"content":"8. Should have good contrast between colours to allow people to read text and information more easily","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1245,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1247,"author":{"gitId":"Tkaixiang"},"content":"- **Auto-complete**: A feature that predicts and completes the rest of a word or command as the user types, often activated by pressing the `TAB` key.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1248,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1249,"author":{"gitId":"Tkaixiang"},"content":"- **Fuzzy Searching**: A search technique that finds approximate matches to the search terms, allowing users to find results without needing exact matches.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1250,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1251,"author":{"gitId":"Tkaixiang"},"content":"- **Recycle Bin**: A temporary storage area for deleted contacts, allowing users to restore them if they were deleted accidentally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1252,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1253,"author":{"gitId":"Tkaixiang"},"content":"- **Reminder/Event**: A scheduled notification linked to a contact, alerting the user of upcoming tasks, appointments, or follow-ups.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1254,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1255,"author":{"gitId":"Tkaixiang"},"content":"- **Social Media Handles**: Usernames or profile links associated with a person\u0027s social media accounts.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1256,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1257,"author":{"gitId":"Tkaixiang"},"content":"- **Syntax Highlighting**: A feature that displays commands in different colors to differentiate between commands, attributes, and values for easier readability.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1258,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1259,"author":{"gitId":"Tkaixiang"},"content":"- **Tag**: A label assigned to a contact to categorize or group contacts for better organization.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1260,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1261,"author":{"gitId":"Tkaixiang"},"content":"- **Undo Feature**: A function that allows the user to reverse the last action taken, preventing accidental loss or changes to information.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1262,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1263,"author":{"gitId":"Tkaixiang"},"content":"- **Attribute Placeholder**: A prompt or template shown in the command box that indicates where the user should input specific information in a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1264,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1265,"author":{"gitId":"Tkaixiang"},"content":"- **Contact**: An entry in the PROperty representing a person, including their personal and professional information.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":1266,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1267,"author":{"gitId":"Tkaixiang"},"content":"- **Reminder/Event List**: A chronological list displaying upcoming reminders or events set by the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1268,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1269,"author":{"gitId":"Tkaixiang"},"content":"- **Search History**: A record of previous search queries entered by the user, allowing for quick reuse of past searches.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1270,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1271,"author":{"gitId":"Tkaixiang"},"content":"- **Highlighting Errors**: Visual cues provided by the application (such as underlines or color changes) to indicate mistakes in command input.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1272,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1273,"author":{"gitId":"Tkaixiang"},"content":"- **Attribute Placeholder**: A visual guide in the command box showing the required and optional attributes for a command.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1274,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1275,"author":{"gitId":"Tkaixiang"},"content":"- **Priority Tagging**: The act of marking certain contacts to appear at the top of the contact list for quick access.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":1276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1277,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1279,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1281,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1283,"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","isFullCredit":false},{"lineNumber":1284,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1286,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1288,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1290,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1291,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1292,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1293,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1294,"author":{"gitId":"Tkaixiang"},"content":" 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1296,"author":{"gitId":"Tkaixiang"},"content":"2. Saving window preferences","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1297,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1298,"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","isFullCredit":false},{"lineNumber":1299,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1300,"author":{"gitId":"Tkaixiang"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1301,"author":{"gitId":"Vatinius"},"content":" ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":1302,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1304,"author":{"gitId":"Tkaixiang"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1306,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1308,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1309,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1310,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1311,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1312,"author":{"gitId":"Tkaixiang"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1313,"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","isFullCredit":false},{"lineNumber":1314,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1315,"author":{"gitId":"Tkaixiang"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1316,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1317,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1318,"author":{"gitId":"Tkaixiang"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1319,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1321,"author":{"gitId":"Tkaixiang"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":1322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1323,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1325,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1326,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1327,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":1329,"author":{"gitId":"Tkaixiang"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"sayomaki":16,"-":331,"Vatinius":8,"BuffWuff1712":16,"Tkaixiang":958}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Documentation guide","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"**Setting up and maintaining the project website:**","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation.","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"* The `docs/` folder is used for documentation.","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html).","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"* Note these points when adapting the documentation to a different project/product:","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The \u0027Site-wide settings\u0027 section of the page linked above has information on how to update site-wide elements such as the top navigation bar.","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vatinius"},"content":" * :bulb: In addition to updating content files, you might have to update the config files `docs\\_config.yml` and `docs\\_sass\\minima\\_base.scss` (which contains a reference to `PROperty` that comes into play when converting documentation pages to PDF format).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are using Intellij for editing documentation files, you can consider enabling \u0027soft wrapping\u0027 for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping)","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html)","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"**Diagrams:**","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html)","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"**Converting a document to the PDF format:**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html)","lastModifiedDate":"2020-06-07","isFullCredit":false}],"authorContributionMap":{"-":28,"Vatinius":1}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"PROperty is a **desktop app for property agents managing contacts and their property listings,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vatinius"},"content":"optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vatinius"},"content":"If you can type fast, PROperty can get your contact and property management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"2. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"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","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"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","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"BuffWuff1712"},"content":"Format: `add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG] [r/REMARKS]…​`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"BuffWuff1712"},"content":"* NAME and PHONE NUMBER fields must be provided.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"BuffWuff1712"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/looking for HDB`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"BuffWuff1712"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Flatbush Avenue, block 81, #02-02 p/1234567 t/Condominium`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"sayomaki"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG] [dt/TAG] [r/REMARK]…​`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"sayomaki"},"content":"* When editing tags, the tags specified using `t/` will be added to the contact (cumulatively).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"sayomaki"},"content":"* Tags can also be removed using the delete tag `dt/` prefix, followed by the tag name.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"tayxuenye"},"content":"### Locating persons by tag: `findtag`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"tayxuenye"},"content":"Finds persons whose tags contain any of the given words.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"tayxuenye"},"content":"Format: `findtag TAG [MORE_TAGS]`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"tayxuenye"},"content":"- The search is case-insensitive. e.g., `HDB` will match `hdb`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"tayxuenye"},"content":"- The order of the tags does not matter.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"tayxuenye"},"content":"- Persons with at least one matching tag will be returned (i.e., an `OR` search).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"tayxuenye"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tayxuenye"},"content":"- `findtag HDB` returns persons tagged with `HDB`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tayxuenye"},"content":"- `findtag HDB colleague` returns persons tagged with either `HDB` or `colleague`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Vatinius"},"content":"### Quick reference help: `help`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Vatinius"},"content":"Shows commands in a help menu for quick reference during use of PROperty.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Vatinius"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"Vatinius"},"content":"Format: `help`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Tkaixiang"},"content":"### Managing Remarks : `remark`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"Tkaixiang"},"content":"Adds/removes a remark from a person in PROperty.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Tkaixiang"},"content":"Format: `remark INDEX r/[REMARKS]`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Tkaixiang"},"content":"- Adds a remark `REMARKS` to the person at `INDEX`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Tkaixiang"},"content":"- The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Tkaixiang"},"content":"- The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Tkaixiang"},"content":"- **Note:** `[REMARKS]` will **delete the remark if left blank**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"Tkaixiang"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Tkaixiang"},"content":"- `remark 1 r/Prefers a higher floor apartment`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Tkaixiang"},"content":" - Adds a remark \"Prefers a higher floor apartment\" to the person at index `1`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"Tkaixiang"},"content":"- `remark 1 r/`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"Tkaixiang"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"Tkaixiang"},"content":" - Deletes the remark of person at index `1`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"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","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":210,"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","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":213,"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","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"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","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":232,"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","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Tkaixiang"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Tkaixiang"},"content":"| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Tkaixiang"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG] [r/REMARKS]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Tkaixiang"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Tkaixiang"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Tkaixiang"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG] [r/REMARKS]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Tkaixiang"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"tayxuenye"},"content":"| **Findtag**| `findtag TAG [MORE_TAGS]`\u003cbr\u003e e.g., `findtag friend colleague` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Tkaixiang"},"content":"| **List** | `list` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Tkaixiang"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Tkaixiang"},"content":"| **Remark** | `remark INDEX r/[REMARKS]` |","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"tayxuenye":16,"sayomaki":3,"-":170,"Vatinius":11,"BuffWuff1712":5,"Tkaixiang":44}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"sayomaki"},"content":"title: \"PROperty\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sayomaki"},"content":"repository: \"AY2425S1-CS2103T-F15-3/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vatinius"},"content":"title: PROperty","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"[//]: # ([![CI Status]\u0026#40;https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg\u0026#41;]\u0026#40;https://github.com/se-edu/addressbook-level3/actions\u0026#41;)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vatinius"},"content":"[//]: # ([![codecov]\u0026#40;https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg\u0026#41;]\u0026#40;https://codecov.io/gh/se-edu/addressbook-level3\u0026#41;)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vatinius"},"content":"[//]: # (The commented out section is not relevent to PROperty. However, I do not know how to properly change the links such that it reflect PROperty\u0027s content. Hence, I have left it commented out for future reference.)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vatinius"},"content":"**PROperty is a desktop application for managing your property listings and client\u0027s contact details.**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vatinius"},"content":"While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"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","isFullCredit":false},{"lineNumber":18,"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"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","isFullCredit":false}],"authorContributionMap":{"-":15,"Vatinius":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getName().toString(), \"\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getPhone().toString(), \"; Phone: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getEmail().toString(), \"; Email: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"BuffWuff1712"},"content":" appendIfNotEmpty(builder, person.getAddress().toString(), \"; Address: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"BuffWuff1712"},"content":" if (!person.getTags().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"BuffWuff1712"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"BuffWuff1712"},"content":" person.getTags().forEach(tag -\u003e builder.append(tag).append(\" \"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"BuffWuff1712"},"content":" builder.setLength(builder.length() - 1); // Remove trailing space","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":" appendIfNotEmpty(builder, person.getRemark().toString(), \"; Remark: \");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"BuffWuff1712"},"content":" return builder.toString().trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"BuffWuff1712"},"content":" private static void appendIfNotEmpty(StringBuilder builder, String value, String prefix) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"BuffWuff1712"},"content":" if (value !\u003d null \u0026\u0026 !value.isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"BuffWuff1712"},"content":" builder.append(prefix).append(value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":41,"BuffWuff1712":19,"Tkaixiang":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vatinius"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"BuffWuff1712"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"BuffWuff1712"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]...\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" + PREFIX_REMARK + \"Loves large houses\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_ADD_COMMAND \u003d \"Add Command \\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: add n/NAME p/NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG] [r/REMARK]\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: add n/John Doe p/12345678 t/Student\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Items in the [square brackets] are optional and can be input in any order!\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":78,"Vatinius":1,"BuffWuff1712":6,"Tkaixiang":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_DELETE_COMMAND \u003d \"Delete Command\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: delete INDEX\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: delete 1\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"BuffWuff1712"},"content":" + \"- INDEX is the index of the customer displayed.\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":69,"BuffWuff1712":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"sayomaki"},"content":" + \"[\" + PREFIX_TAG + \"ADD_TAG] \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"sayomaki"},"content":" + \"[\" + PREFIX_DELETE_TAG + \"DELETE_TAG] \"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]...\\n\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_EDIT_COMMAND \u003d \"Edit Command \\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG] [dt/TAG] [r/REMARK]\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: edit 1 p/87654321 t/Tutor dt/Student\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"BuffWuff1712"},"content":" + \"- INDEX is the index of the customer displayed. Items in the [square brackets] are optional\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"BuffWuff1712"},"content":" + \" and can be input in any order! TAG can be both a tag to be added or removed, depending on\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"BuffWuff1712"},"content":" + \" the prefix for the item.\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"sayomaki"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.computeTags(personToEdit.getTags());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Tkaixiang"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Tkaixiang"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedRemark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"sayomaki"},"content":" private Set\u003cTag\u003e addTags;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"sayomaki"},"content":" private Set\u003cTag\u003e deleteTags;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Tkaixiang"},"content":" private Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"sayomaki"},"content":" setAddTags(toCopy.addTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"sayomaki"},"content":" setDeleteTags(toCopy.deleteTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Tkaixiang"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"sayomaki"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, addTags, deleteTags, remark);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Tkaixiang"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Tkaixiang"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Tkaixiang"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"sayomaki"},"content":" public void setAddTags(Set\u003cTag\u003e addTags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"sayomaki"},"content":" this.addTags \u003d (addTags !\u003d null) ? new HashSet\u003c\u003e(addTags) : null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"sayomaki"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getAddTags() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"sayomaki"},"content":" return (addTags !\u003d null) ? Optional.of(Collections.unmodifiableSet(addTags)) : Optional.empty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"sayomaki"},"content":" public void setDeleteTags(Set\u003cTag\u003e deleteTags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"sayomaki"},"content":" this.deleteTags \u003d (deleteTags !\u003d null) ? new HashSet\u003c\u003e(deleteTags) : null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"sayomaki"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getDeleteTags() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"sayomaki"},"content":" return (deleteTags !\u003d null) ? Optional.of(Collections.unmodifiableSet(deleteTags)) : Optional.empty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"sayomaki"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"sayomaki"},"content":" * Computes the updated set of tags for {@code personToEdit} with given tag list,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"sayomaki"},"content":" * and returns an unmodifiable tag set.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"sayomaki"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"sayomaki"},"content":" public Set\u003cTag\u003e computeTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"sayomaki"},"content":" Optional\u003cSet\u003cTag\u003e\u003e addTags \u003d getAddTags();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"sayomaki"},"content":" if (addTags.isPresent() \u0026\u0026 addTags.get().isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"sayomaki"},"content":" // empty add tags set, which means to remove all tags","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"sayomaki"},"content":" return Collections.emptySet();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"sayomaki"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"sayomaki"},"content":" addTags.ifPresent(newTags::addAll);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"sayomaki"},"content":" getDeleteTags().ifPresent(newTags::removeAll); // ignores tag silently if tag to be deleted not found","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"sayomaki"},"content":" return Collections.unmodifiableSet(newTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"sayomaki"},"content":" \u0026\u0026 Objects.equals(addTags, otherEditPersonDescriptor.addTags)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"sayomaki"},"content":" \u0026\u0026 Objects.equals(deleteTags, otherEditPersonDescriptor.deleteTags)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"Tkaixiang"},"content":" \u0026\u0026 Objects.equals(remark, otherEditPersonDescriptor.remark);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"sayomaki"},"content":" .add(\"add-tags\", addTags)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"sayomaki"},"content":" .add(\"delete-tags\", deleteTags)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Tkaixiang"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"sayomaki":41,"-":231,"BuffWuff1712":6,"Tkaixiang":17}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_EXIT_COMMAND \u003d \"Exit Command\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: exit\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: exit\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"-":18,"BuffWuff1712":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_FIND_COMMAND \u003d \"Find Command\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: find KEYWORDS [MORE_KEYWORDS]\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: find John Doe\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Only names can be searched; Only full words will be matched.\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"BuffWuff1712"},"content":" + \" The command is case insensitive. When more than one keyword is used,\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"BuffWuff1712"},"content":" + \" persons matching at least one keyword will be returned.\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"-":58,"BuffWuff1712":6}},{"path":"src/main/java/seedu/address/logic/commands/FindTagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":" * Finds and lists all persons in address book whose tags match the specified tags.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":" * Tag matching is case-insensitive.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"// Solution structure inspired by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommand extends Command {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":" public static final String COMMAND_WORD \u003d \"findtag\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose tags match any of the \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":" + \"specified tag names (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":" + \"Parameters: TAG [MORE_TAGS]...\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":" + \"Example: \" + COMMAND_WORD + \" friend family colleague\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_FINDTAG_COMMAND \u003d \"Findtag Command\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: findtag TAG [MORE_TAGS]\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: findtag HDB Condo\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Tags are case insensitive.\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Items in the [square brackets] are optional. Persons with at least one matching tag will be returned.\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" //Suggested by ChatGPT as a way of checking whether tag exists in the Person","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public FindTagCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tayxuenye"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tayxuenye"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tayxuenye"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tayxuenye"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tayxuenye"},"content":" if (!(other instanceof FindTagCommand)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tayxuenye"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand otherFindTagCommand \u003d (FindTagCommand) other;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tayxuenye"},"content":" return predicate.equals(otherFindTagCommand.predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tayxuenye"},"content":" public String toString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tayxuenye"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tayxuenye"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tayxuenye"},"content":" .toString();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":56,"-":8,"BuffWuff1712":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_LIST_COMMAND \u003d \"List Command\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: list\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: list\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":23,"BuffWuff1712":3}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" + \": Edits or adds a remark to the customer identified \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" + \"by the index number passed into INDEX parameter. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" + \"r/ Prefers a high-rise unit.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_EDIT_REMARK_SUCCESS \u003d \"Edited remark to Person: %1$s\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"BuffWuff1712"},"content":" public static final String HELP_REMARK_COMMAND \u003d \"Remark Command\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Format: remark INDEX r/[REMARKS]\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Example: remark 1 r/Prefers high rise apartments\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"BuffWuff1712"},"content":" + \"- Items in the [square brackets] are optional.\\n\"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"BuffWuff1712"},"content":" + \"- If [REMARKS] is left blank, the remark will be deleted from the specified Person at INDEX.\";","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" private final Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" this.index \u003d index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Tkaixiang"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Tkaixiang"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Tkaixiang"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Tkaixiang"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Tkaixiang"},"content":" personToEdit.getAddress(), personToEdit.getTags(), remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Tkaixiang"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Tkaixiang"},"content":" String message;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" if (remark.value.isEmpty()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Tkaixiang"},"content":" message \u003d MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Tkaixiang"},"content":" } else if (!personToEdit.getRemark().value.isEmpty()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Tkaixiang"},"content":" message \u003d MESSAGE_EDIT_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Tkaixiang"},"content":" } else {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Tkaixiang"},"content":" message \u003d MESSAGE_ADD_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Tkaixiang"},"content":" return new CommandResult(generateSuccessMessage(editedPerson, message));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Tkaixiang"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Tkaixiang"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Tkaixiang"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" private String generateSuccessMessage(Person personToEdit, String message) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Tkaixiang"},"content":" return String.format(message, Messages.format(personToEdit));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Tkaixiang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Tkaixiang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Tkaixiang"},"content":" return true;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Tkaixiang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Tkaixiang"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Tkaixiang"},"content":" return false;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"BuffWuff1712":5,"Tkaixiang":101}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"BuffWuff1712"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"BuffWuff1712"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"BuffWuff1712"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":56,"BuffWuff1712":3,"Tkaixiang":6}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.commands.FindTagCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tayxuenye"},"content":" case FindTagCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tayxuenye"},"content":" return new FindTagCommandParser().parse(arguments);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Tkaixiang"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"tayxuenye":3,"-":86,"Tkaixiang":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"sayomaki"},"content":" public static final Prefix PREFIX_DELETE_TAG \u003d new Prefix(\"dt/\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"sayomaki":1,"-":15,"Tkaixiang":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"sayomaki"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"sayomaki"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_DELETE_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_REMARK);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"sayomaki"},"content":" parseAddTags(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setAddTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"sayomaki"},"content":" parseDeleteTags(argMultimap.getAllValues(PREFIX_DELETE_TAG))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"sayomaki"},"content":" .ifPresent(editPersonDescriptor::setDeleteTags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Tkaixiang"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Tkaixiang"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"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","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"sayomaki"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseAddTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"sayomaki"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseDeleteTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"sayomaki"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"sayomaki"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"sayomaki"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"sayomaki"},"content":" return Optional.of(ParserUtil.parseTags(tags));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"sayomaki"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"sayomaki":16,"-":81,"Tkaixiang":6}},{"path":"src/main/java/seedu/address/logic/parser/FindTagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.commands.FindTagCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":" * Parses input arguments and creates a new FindTagCommand object","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"// Solution structure inspired by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommandParser implements Parser\u003cFindTagCommand\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagCommand","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":" * and returns a FindTagCommand object for execution.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":" public FindTagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tayxuenye"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tayxuenye"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Written by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Split the input by spaces to get the tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagsToMatch \u003d Stream.of(trimmedArgs.split(\"\\\\s+\"))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new FindTagCommand(new TagContainsKeywordsPredicate(tagsToMatch));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":33,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"BuffWuff1712"},"content":" if (trimmedAddress.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"BuffWuff1712"},"content":" return new Address(\"\"); // Allow empty address","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"BuffWuff1712"},"content":" if (trimmedEmail.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"BuffWuff1712"},"content":" return new Email(\"\"); // Allow empty email","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"BuffWuff1712"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Tkaixiang"},"content":" * Parses a {@code String remark} into an {@code Remark}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Tkaixiang"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Tkaixiang"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Tkaixiang"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Tkaixiang"},"content":" public static Remark parseRemark(String remark) throws ParseException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Tkaixiang"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Tkaixiang"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Tkaixiang"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":124,"BuffWuff1712":8,"Tkaixiang":13}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":" * Parses input arguments and creates a new RemarkCommand object.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" * Parses the given {@code String} of arguments in the context of the RemarkCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" * and returns a RemarkCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" requireNonNull(args);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" try {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" Remark remark \u003d new Remark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":44}},{"path":"src/main/java/seedu/address/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"BuffWuff1712"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":64,"BuffWuff1712":1}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"BuffWuff1712"},"content":" return test.isEmpty() || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":78,"BuffWuff1712":1}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" public Person(Name name, Phone phone, Email email,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" Address address, Set\u003cTag\u003e tags, Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Tkaixiang"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" return remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"BuffWuff1712"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"BuffWuff1712"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Tkaixiang"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":115,"BuffWuff1712":2,"Tkaixiang":9}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":" * Represents a Remark of a person in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":" * Guarantees: immutable","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"public class Remark {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":" public final String value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":" * Constructs an {@code Remark}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":" * @param remark A valid address.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" value \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" public String toString() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" return value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" return true;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" return false;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" Remark otherAddress \u003d (Remark) other;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":50}},{"path":"src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches any of the tags given.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"// Solution structure inspired by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"public class TagContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":" private final Set\u003cTag\u003e tagsToMatch;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":" public TagContainsKeywordsPredicate(Set\u003cTag\u003e tagsToMatch) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":" this.tagsToMatch \u003d tagsToMatch;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Written by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" return person.getTags().stream()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" .anyMatch(personTag -\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" tagsToMatch.stream().anyMatch(tag -\u003e tag.tagName.equalsIgnoreCase(personTag.tagName)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tayxuenye"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tayxuenye"},"content":" return true;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":" if (!(other instanceof TagContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" return false;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate otherTagContainsKeywordsPredicate \u003d (TagContainsKeywordsPredicate) other;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":" return tagsToMatch.equals(otherTagContainsKeywordsPredicate.tagsToMatch);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tayxuenye"},"content":" public String toString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tayxuenye"},"content":" return new ToStringBuilder(this).add(\"tagsToMatch\", tagsToMatch).toString();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":43,"-":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"friends\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"colleagues\", \"friends\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"neighbours\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"family\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"classmates\"), new Remark(\"A Remark\")),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" getTagSet(\"colleagues\"), new Remark(\"A Remark\"))","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"Tkaixiang":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" private final String remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Tkaixiang"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Tkaixiang"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Tkaixiang"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Tkaixiang"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelRemark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"Tkaixiang":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.AddCommand.HELP_ADD_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.DeleteCommand.HELP_DELETE_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.EditCommand.HELP_EDIT_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.ExitCommand.HELP_EXIT_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.FindCommand.HELP_FIND_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.FindTagCommand.HELP_FINDTAG_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.ListCommand.HELP_LIST_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"BuffWuff1712"},"content":"import static seedu.address.logic.commands.RemarkCommand.HELP_REMARK_COMMAND;","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vatinius"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_INTRO \u003d \"Below are some basic instructions to get started using PROperty!\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"BuffWuff1712"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_MORE_INFORMATION \u003d \"For more detailed information,\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"sayomaki"},"content":" + \" visit the PROperty User Guide at: https://ay2425s1-cs2103t-f15-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vatinius"},"content":" private static final String HELP_MESSAGE \u003d HELP_INTRO","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vatinius"},"content":" + HELP_ADD_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Vatinius"},"content":" + HELP_EDIT_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vatinius"},"content":" + HELP_DELETE_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Vatinius"},"content":" + HELP_LIST_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vatinius"},"content":" + HELP_FIND_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Vatinius"},"content":" + HELP_FINDTAG_COMMAND","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" + HELP_REMARK_COMMAND","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Vatinius"},"content":" + HELP_EXIT_COMMAND","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Vatinius"},"content":" + \"\\n\\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Vatinius"},"content":" + HELP_MORE_INFORMATION;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Vatinius"},"content":" private static final double DEFAULT_WIDTH \u003d 800;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Vatinius"},"content":" private static final double DEFAULT_HEIGHT \u003d 650;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Vatinius"},"content":" private static final double MIN_WIDTH \u003d 800;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Vatinius"},"content":" private static final double MIN_HEIGHT \u003d 700;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" private Text helpMessage;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Vatinius"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Vatinius"},"content":" setWindowDefaultSize(root);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Vatinius"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Vatinius"},"content":" * Sets the default size of the window.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Vatinius"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Vatinius"},"content":" private void setWindowDefaultSize(Stage root) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Vatinius"},"content":" root.setWidth(DEFAULT_WIDTH);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Vatinius"},"content":" root.setHeight(DEFAULT_HEIGHT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Vatinius"},"content":" root.setMinWidth(MIN_WIDTH);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Vatinius"},"content":" root.setMinHeight(MIN_HEIGHT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Vatinius"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Vatinius"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"sayomaki":1,"-":83,"Vatinius":39,"BuffWuff1712":10,"Tkaixiang":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" @FXML","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" private Label remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":" String remarkValue \u003d person.getRemark().value;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" if (remarkValue !\u003d null \u0026\u0026 !remarkValue.trim().isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" remark.setText(remarkValue);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Tkaixiang"},"content":" remark.setManaged(true);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Tkaixiang"},"content":" } else {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":" remark.setManaged(false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":59,"Tkaixiang":10}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Tkaixiang"},"content":".remark {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Tkaixiang"},"content":" -fx-text-fill: #cbd5e1 !important;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Tkaixiang"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"-":352,"Tkaixiang":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vatinius"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vatinius"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vatinius"},"content":"\u003cfx:root title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/22\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vatinius"},"content":" \u003cScrollPane fitToHeight\u003d\"true\" fitToWidth\u003d\"true\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vatinius"},"content":" \u003cVBox fx:id\u003d\"helpMessageContainer\" alignment\u003d\"TOP_LEFT\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" \u003cText fx:id\u003d\"helpMessage\" wrappingWidth\u003d\"600\" fill\u003d\"WHITE\"\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vatinius"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Vatinius"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vatinius"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" \u003c/Text\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vatinius"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vatinius"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false}],"authorContributionMap":{"-":21,"Vatinius":10,"Tkaixiang":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"\u003c?import java.lang.String?\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/22\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" \u003cLabel fx:id\u003d\"remark\" text\u003d\"\\$remark\"\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" \u003cstyleClass\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" \u003cString fx:value\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" \u003cString fx:value\u003d\"remark\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" \u003c/styleClass\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":32,"Tkaixiang":16}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"sayomaki"},"content":" public static final String INVALID_DELETE_TAG_DESC \u003d \" \" + PREFIX_DELETE_TAG + \"chubby*\"; // \u0027*\u0027 not allowed","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" // The issue here is that since a default person does not specify the remark field, it will be left untouched","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" // Hence, we need to add the remark field of the \"TypicalPersons\" (index\u003d0) to show that it is unedited","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder().withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"-":183,"Tkaixiang":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"sayomaki"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", add-tags\u003d\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"sayomaki"},"content":" + editPersonDescriptor.getAddTags().orElse(null) + \", delete-tags\u003d\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"sayomaki"},"content":" + editPersonDescriptor.getDeleteTags().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \"}\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":3,"-":69,"Tkaixiang":1}},{"path":"src/test/java/seedu/address/logic/commands/FindTagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tayxuenye"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tayxuenye"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTagCommand}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommandTest {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":" public void equals() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e firstTag \u003d new HashSet\u003c\u003e(Collections.singletonList(new Tag(\"friend\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e secondTag \u003d new HashSet\u003c\u003e(Collections.singletonList(new Tag(\"colleague\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate firstPredicate \u003d new TagContainsKeywordsPredicate(firstTag);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate secondPredicate \u003d new TagContainsKeywordsPredicate(secondTag);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findFirstCommand \u003d new FindTagCommand(firstPredicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findSecondCommand \u003d new FindTagCommand(secondPredicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tayxuenye"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tayxuenye"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tayxuenye"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findFirstCommandCopy \u003d new FindTagCommand(firstPredicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tayxuenye"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tayxuenye"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tayxuenye"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tayxuenye"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tayxuenye"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tayxuenye"},"content":" // different command -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tayxuenye"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tayxuenye"},"content":" public void execute_zeroTags_noPersonFound() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tayxuenye"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d preparePredicate(\"\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand command \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tayxuenye"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tayxuenye"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tayxuenye"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tayxuenye"},"content":" public void execute_singleTag_multiplePersonsFound() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tayxuenye"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d preparePredicate(\"friends\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand command \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tayxuenye"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tayxuenye"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tayxuenye"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tayxuenye"},"content":" public void execute_multipleTags_multiplePersonsFound() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tayxuenye"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d preparePredicate(\"friends owesMoney\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand command \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"tayxuenye"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"tayxuenye"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"tayxuenye"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"tayxuenye"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"friend\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"tayxuenye"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand findTagCommand \u003d new FindTagCommand(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"tayxuenye"},"content":" String expected \u003d FindTagCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"tayxuenye"},"content":" assertEquals(expected, findTagCommand.toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" //@@author tayxuenye-reused","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Solution by ChatGPT","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code TagContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" private TagContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!userInput.trim().isEmpty()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Arrays.stream(userInput.split(\"\\\\s+\")).forEach(tagName -\u003e tags.add(new Tag(tagName)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new TagContainsKeywordsPredicate(tags);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":100,"-":13}},{"path":"src/test/java/seedu/address/logic/commands/RemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.RemarkCommand.MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.commands.RemarkCommand.MESSAGE_EDIT_REMARK_SUCCESS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommandTest {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" public void execute_validAddRemark() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" final Remark remark \u003d new Remark(\"Some remark\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(remark.toString()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" String expectedMessage \u003d String.format(MESSAGE_ADD_REMARK_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" assertCommandSuccess(new RemarkCommand(INDEX_THIRD_PERSON, remark), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" public void execute_validEditRemark() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" final Remark remark \u003d new Remark(\"Some remark\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(remark.toString()).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" String expectedMessage \u003d String.format(MESSAGE_EDIT_REMARK_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Tkaixiang"},"content":" assertCommandSuccess(new RemarkCommand(INDEX_FIRST_PERSON, remark), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Tkaixiang"},"content":" public void execute_emptyRemark() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Tkaixiang"},"content":" final Remark remark \u003d new Remark(\"\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Tkaixiang"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Tkaixiang"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(remark.toString()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Tkaixiang"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_REMARK_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Tkaixiang"},"content":" assertCommandSuccess(new RemarkCommand(INDEX_FIRST_PERSON, remark), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":70}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Tkaixiang"},"content":" public void parseCommand_remark() throws Exception {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Tkaixiang"},"content":" assertTrue(parser.parseCommand(RemarkCommand.COMMAND_WORD + \" 1 r/ hello world!\") instanceof RemarkCommand);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"-":101,"Tkaixiang":7}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DELETE_TAG_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"sayomaki"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"sayomaki"},"content":" private static final String DELETE_TAG_EMPTY \u003d \" \" + PREFIX_DELETE_TAG;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"sayomaki"},"content":" assertParseFailure(parser, \"1\" + INVALID_DELETE_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"sayomaki"},"content":" // parsing {@code PREFIX_DELETE_TAG} with empty tag should fail unlike {@code PREFIX_TAG} which resets the tags","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"sayomaki"},"content":" assertParseFailure(parser, \"1\" + DELETE_TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"sayomaki"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + DELETE_TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"sayomaki"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"sayomaki":8,"-":206}},{"path":"src/test/java/seedu/address/logic/parser/FindTagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tayxuenye"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tayxuenye"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tayxuenye"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tayxuenye"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tayxuenye"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tayxuenye"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.logic.commands.FindTagCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tayxuenye"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tayxuenye"},"content":"public class FindTagCommandParserTest {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tayxuenye"},"content":" private FindTagCommandParser parser \u003d new FindTagCommandParser();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tayxuenye"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tayxuenye"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tayxuenye"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tayxuenye"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tayxuenye"},"content":" public void parse_validArgs_returnsFindTagCommand() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tayxuenye"},"content":" Set\u003cTag\u003e expectedTags \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"friend\"), new Tag(\"family\")));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tayxuenye"},"content":" FindTagCommand expectedFindTagCommand \u003d new FindTagCommand(new TagContainsKeywordsPredicate(expectedTags));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tayxuenye"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tayxuenye"},"content":" assertParseSuccess(parser, \"friend family\", expectedFindTagCommand);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tayxuenye"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tayxuenye"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tayxuenye"},"content":" assertParseSuccess(parser, \" \\n friend \\n \\t family \\t\", expectedFindTagCommand);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tayxuenye"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tayxuenye"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"tayxuenye":39}},{"path":"src/test/java/seedu/address/logic/parser/RemarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Tkaixiang"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Tkaixiang"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Tkaixiang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Tkaixiang"},"content":"public class RemarkCommandParserTest {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Tkaixiang"},"content":" private final RemarkCommandParser parser \u003d new RemarkCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Tkaixiang"},"content":" private final Remark randomRemark \u003d new Remark(\"random remark!\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Tkaixiang"},"content":" private final Remark specialRemark \u003d new Remark(\"needs 2 toilets/requires 2 room;//!@#$%^\u0026*()\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Tkaixiang"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Tkaixiang"},"content":" // valid remark with valid index","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Tkaixiang"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Tkaixiang"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_REMARK + randomRemark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand expectedCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, randomRemark);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Tkaixiang"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" // valid remark with \"/r\" and slightly weirder characters","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Tkaixiang"},"content":" String userInput2 \u003d targetIndex.getOneBased() + \" \" + PREFIX_REMARK + specialRemark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Tkaixiang"},"content":" RemarkCommand expectedCommand2 \u003d new RemarkCommand(INDEX_FIRST_PERSON, specialRemark);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" assertParseSuccess(parser, userInput2, expectedCommand2);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Tkaixiang"},"content":" // empty remark with valid index","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Tkaixiang"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_REMARK;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Tkaixiang"},"content":" expectedCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, new Remark(\"\"));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Tkaixiang"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" @Test","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Tkaixiang"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Tkaixiang"},"content":" String failureMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, RemarkCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" // no parameters","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" assertParseFailure(parser, RemarkCommand.COMMAND_WORD, failureMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Tkaixiang"},"content":" // no index","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Tkaixiang"},"content":" assertParseFailure(parser, RemarkCommand.COMMAND_WORD + \" \" + randomRemark, failureMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Tkaixiang"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"Tkaixiang":51}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"BuffWuff1712"},"content":" // same name and phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"BuffWuff1712"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Tkaixiang"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Tkaixiang"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \"}\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":96,"BuffWuff1712":2,"Tkaixiang":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Tkaixiang"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Tkaixiang"},"content":" VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Tkaixiang"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":" null, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Tkaixiang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"Tkaixiang":16}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"sayomaki"},"content":" descriptor.setAddTags(person.getTags());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"sayomaki"},"content":" descriptor.setAddTags(tagSet);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":85}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Tkaixiang"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Tkaixiang"},"content":" private Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Tkaixiang"},"content":" remark \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Tkaixiang"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Tkaixiang"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Tkaixiang"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Tkaixiang"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Tkaixiang"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Tkaixiang"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Tkaixiang"},"content":" return this;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Tkaixiang"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Tkaixiang"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Tkaixiang"},"content":" return new Person(name, phone, email, address, tags, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"Tkaixiang":13}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"sayomaki"},"content":" if (descriptor.getAddTags().isPresent()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"sayomaki"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getAddTags().get();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"sayomaki":2,"-":60}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Tkaixiang"},"content":" .withTags(\"friends\").withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Tkaixiang"},"content":" .withTags(\"owesMoney\", \"friends\").withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Tkaixiang"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Tkaixiang"},"content":" .withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Tkaixiang"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withRemark(\"remark for this person :D\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Tkaixiang"},"content":" .withEmail(\"hans@example.com\").withRemark(\"remark for this person :D\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Tkaixiang"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Tkaixiang"},"content":" DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":70,"Tkaixiang":8}}] diff --git a/AY2425S1-CS2103T-F15-3_tp_master/commits.json b/AY2425S1-CS2103T-F15-3_tp_master/commits.json index a767dcec..29f3ec60 100644 --- a/AY2425S1-CS2103T-F15-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-F15-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tayxuenye":[{"date":"2024-09-30","commitResults":[{"hash":"fa9ff2db7b2f527570c203a1bfbed3d917ad8f7f","isMergeCommit":true,"messageTitle":"Merge pull request #5 from tayxuenye/add-photo","messageBody":"Add Xuen Ye\u0027s photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"977dc956d0d287966aed174ee605cf052eb0c989","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"afe73f8181f27b938fac324f4cfbc7b2b44e0cb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-about-us-xuenye","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76e8f05a6f066c46293afaf21b9af1eebc63cee2","isMergeCommit":false,"messageTitle":"Update UI mockup and README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"da67d95e68337e35d3cb1f467b1b11aff47db83f","isMergeCommit":true,"messageTitle":"Merge pull request #46 from tayxuenye/new-update-readme","messageBody":"Update UI mockup and README","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"1382da19228c21c4b5d8e6b59267492dc72fbe3a","isMergeCommit":false,"messageTitle":"Add findtag functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0},"test-code":{"insertions":151,"deletions":0}}},{"hash":"9a6f77fda2dbec7560a69c60e9d6677f7e037f12","isMergeCommit":false,"messageTitle":"Fix formatting issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"750200c36b98d8c691c8ce48dae6010e216f6592","isMergeCommit":true,"messageTitle":"Merge branch \u0027search-by-tags\u0027 of https://github.com/tayxuenye/tp into search-by-tags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ca4b29b0c5fb444060900ff1bf3b4b5c13f9c1b7","isMergeCommit":false,"messageTitle":"Add case insensitive function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-10-15","commitResults":[{"hash":"b872c18e1e77e32b9c0deb3c488bede027474a9a","isMergeCommit":true,"messageTitle":"Merge pull request #68 from Vatinius/branch-fix-add-command-error-message","messageBody":"Fix formatting for add command error message","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"d8bed1447c0ce33163b99ba39a7f73772ea44686","isMergeCommit":false,"messageTitle":"Update findtag command help message in HelpWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"c579d88a53a5e3ba93e62feff7c8e1fcadf188d1","isMergeCommit":false,"messageTitle":"Add findtag command description to UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"ee179db1697d312c6e56fc39991ba62c0a9f2785","isMergeCommit":false,"messageTitle":"Add findtag command to command summary in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"f225a05513e5f78a8931c6d333bee80139a79958","isMergeCommit":true,"messageTitle":"Merge pull request #91 from tayxuenye/update-findtag-userguide","messageBody":"Add findtag command description to UserGuide","fileTypesAndContributionMap":{}},{"hash":"03e4ee891b25049107f8cc52e8122b1758c5224c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-findtag-helpwindow","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47f962c46827cbeda2104ce3bff146e6de78c979","isMergeCommit":true,"messageTitle":"Merge pull request #90 from tayxuenye/update-findtag-helpwindow","messageBody":"Update findtag command help message in HelpWindow","fileTypesAndContributionMap":{}}]}],"sayomaki":[{"date":"2024-10-01","commitResults":[{"hash":"257c293f640836b71248e45e421436c3aca8b30d","isMergeCommit":false,"messageTitle":"Add developer user details for sayomaki","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-03","commitResults":[{"hash":"a50dc31ada421e81334ba5eac3b10605502c33ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-profile-pic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b1a51ae4e609fc4ec5363321d0cc6937b25f929d","isMergeCommit":false,"messageTitle":"Update the repository link and project title for docs","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"a06bee9a89e0b91daa2b0f6c7581454dce620aa4","isMergeCommit":true,"messageTitle":"Merge pull request #50 from sayomaki/update-docs-title","messageBody":"Update project title for documentation","fileTypesAndContributionMap":{}},{"hash":"08afabaf22212c1dc22b5279995dd72fa0ae6bd3","isMergeCommit":false,"messageTitle":"Add use case for finding a person using keywords","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":1}}}]},{"date":"2024-10-14","commitResults":[{"hash":"efd211473aa57f84c225f761f064217660739337","isMergeCommit":false,"messageTitle":"Rename edit person descriptor tags to add tags","messageBody":"This is so that it indicates adding of new tags instead of replacing\nthe current tags for the person, and replacement is only done for\nthe empty tag case.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":5,"deletions":5}}},{"hash":"3b34a30e5c9c98c0da3e2ee996bedd0275266f6a","isMergeCommit":false,"messageTitle":"Add delete tag prefix support and handling of tag deletion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"611ae50941180407e107ae093973c68c098c7f06","isMergeCommit":false,"messageTitle":"Update edit command usage and register delete tag prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"5fd379820194ec579ecea817cd3c298063e698dc","isMergeCommit":false,"messageTitle":"Add method to compute new set of tags for a person","messageBody":"This method combines adding the new tags for a person with their\nexisting tags, and removes the tags to be deleted from the person,\nand returns the final set of tags for the person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":1}}},{"hash":"ceae2cd9fdfb08040a8aa355a276e1053afbbb48","isMergeCommit":false,"messageTitle":"Include comment to note that deleting tag is ignored if tag not present","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"061cd725948b91856dd4fefca3767d2032425ef3","isMergeCommit":false,"messageTitle":"Add some simple test cases for delete tag parsing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"437a9baba9ea83e57c037b207b4c4ab0f6920c32","isMergeCommit":false,"messageTitle":"Update test cases for failing toString method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6ecf92e2b35d85908b73ee29795bb23a2fe5b8ca","isMergeCommit":false,"messageTitle":"Add delete tag to string method for edit person descriptor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":1}}},{"hash":"2f05cbdba8016854e5d03cdc84c6d8297b3d88a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-delete-tag","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"ab703ca725d9344e3b0dae43dea0f5f53eb61971","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-delete-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c74db7bfe931d6fc8c1377902a68190e3316ad4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b42566f4361f2796b39a5dd9703e29cfb275cd4a","isMergeCommit":true,"messageTitle":"Merge pull request #62 from Tkaixiang/branch-add-Remark-Command","messageBody":"Adds the Remark command for Customers","fileTypesAndContributionMap":{}},{"hash":"82a54eaf5139d252b2139ace24d205d706ef9a1b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-delete-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10b6dbf55637c73329ca18d679d9672295fdc15d","isMergeCommit":false,"messageTitle":"Fix some overlooked merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-10-16","commitResults":[{"hash":"b42204dcf071bfa08912d546f21559f2ce3f66aa","isMergeCommit":true,"messageTitle":"Merge pull request #87 from Tkaixiang/branch-fix-Help-Menu","messageBody":"Fix Help Menu scrolling","fileTypesAndContributionMap":{}},{"hash":"b2282118fd21a2d7a8d63889196a5d405ca6e7e1","isMergeCommit":false,"messageTitle":"Update help window to show updated usage for edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"fded8d4d5a59d9c75bc39cb871267c03af25a311","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-help-cmd-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c30e4b9d8bbf4e37c7f3b64b977adce6b8eac7f8","isMergeCommit":false,"messageTitle":"Remove unnecessary bullet point in help command display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"484337d6fa3d0dbca2646465e541d1da610ac8b6","isMergeCommit":false,"messageTitle":"Update User Guide for edit command with delete tag usage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"fd09033810c5c07179e145c0957d3ae591c16d08","isMergeCommit":false,"messageTitle":"Remove additional whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a5edb368c4a256cd750dd6ebbf894aa0f2208cc7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-user-guide-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"851d0cda7ab54e4f29741cf7136aa24f3709806f","isMergeCommit":true,"messageTitle":"Merge pull request #92 from sayomaki/update-user-guide-edit","messageBody":"Update User Guide for edit command with delete tag usage","fileTypesAndContributionMap":{}},{"hash":"027dd0eefd49a430a78383700aa5c2b5e0a26f0c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-help-menu-screenshot-in-user-guide","messageBody":"","fileTypesAndContributionMap":{}}]}],"Vatinius":[{"date":"2024-10-01","commitResults":[{"hash":"4ba742807801dac6c9aeaff75eabad622e7d9f69","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":44}}}]},{"date":"2024-10-02","commitResults":[{"hash":"f292dede7420c714540e366dcf76663066636cdd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fccf08783703df29ac8fad9a747f60ca17215079","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-DG-Update-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4ebf40fd440afc3c9718818a91c0dd5ebc4df18","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Tkaixiang/branch-teamAboutUs-NFR","messageBody":"Update AboutUs page for Team and DG Non-Functional Requirements","fileTypesAndContributionMap":{}},{"hash":"1cd83f15ff9bdc775b33d77121ce8b9f2a77b130","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-DG-Update-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1bd0923969ccbfde4a205b1a1ff2ddcbd73ceb0f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-update-readme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f30a2e6018b5c70b71394b74e3b7fafb2fa6d2cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-update-readme","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"4ce9e98dd825cbbd952bf46454e886869af4b78a","isMergeCommit":true,"messageTitle":"Merge pull request #51 from sayomaki/update-use-cases","messageBody":"Update use cases","fileTypesAndContributionMap":{}},{"hash":"932311a65db7dcbe6da9355223351cff479589c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-profile-pic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0de2c169cea17490eec7fd3fdce900f6c27f838f","isMergeCommit":true,"messageTitle":"Merge pull request #53 from BuffWuff1712/branch-profile-pic","messageBody":"Add Bing\u0027s image link to AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"1a8a1dfecce134943b23cf557e4fc1ba374d7960","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Tkaixiang/branch-update-Developer-Guide","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"96d1ad13462c727bd2ea77aba27fb2768823d629","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b3000cfff04b963b35f616382c8036509728d3f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-edit-add-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"1b89af6d093cecf1fced0f18c1d058fd67ad3ea7","isMergeCommit":true,"messageTitle":"Merge pull request #60 from BuffWuff1712/branch-edit-add-command","messageBody":"Edit Add Command","fileTypesAndContributionMap":{}},{"hash":"3643a53a92193c7c99e6c61a5b9103e4e6923d9c","isMergeCommit":false,"messageTitle":"Implement better help feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":40}}},{"hash":"73252b60a3448109546bc1b1517d41b1e1543e9c","isMergeCommit":false,"messageTitle":"Change minimum height of help GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5d1f804e407cd913bef883884fb77da86ef943a0","isMergeCommit":false,"messageTitle":"Fix formatting to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":25}}},{"hash":"f28fabcb6087f553cded257622d4652869e4d11e","isMergeCommit":false,"messageTitle":"Fix formatting of HELP_FIND_COMMAND","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cd0f09fd8f5930b1c09115f2946df9aab5736dfb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into search-by-tags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cdea25f2664c303e574c72ed13aeba9f344421a4","isMergeCommit":false,"messageTitle":"Increase minimum height of help GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"932ef1cfa9e64c0cd2cedd41db0dc06045c84a2e","isMergeCommit":false,"messageTitle":"Fix formatting of HELP_EDIT_COMMAND","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"89bdba70f7cf8f9f039f9e0bf5fd2f7f160e16f7","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tayxuenye/search-by-tags","messageBody":"Add findtag functionality","fileTypesAndContributionMap":{}},{"hash":"e6b9154e05a00ad7accb68238469a181276943a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-improve-help-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47abd53908dee57568859bd3df8d6b88ee128e40","isMergeCommit":false,"messageTitle":"Add findtag command to help","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":18}}},{"hash":"9c6a78e4db275868c2e1ed11115811e18a5214b8","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Vatinius/branch-improve-help-feature","messageBody":"Improve help feature and its GUI","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"fe5fd4dc7a01653941504e3e6044e221c6bc38a0","isMergeCommit":false,"messageTitle":"Fix formatting for add command error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0e5c9330cc1e16bcd04c3509a2ba74e4467a4a3e","isMergeCommit":false,"messageTitle":"Update help information","messageBody":"Added instructions on how to exit the command using the CLI. Resolved extra unneeded newline at HelpWindow\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"1fc57d29d3a4e3a09fe362628307edce61fa1544","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-improve-help-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b88e1c04f3d452ba66366565ac439811417ad2f","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Vatinius/branch-improve-help-feature","messageBody":"Update help information","fileTypesAndContributionMap":{}},{"hash":"aa3972b3166e0bcc447cd50fcc53149255f45176","isMergeCommit":true,"messageTitle":"Merge pull request #67 from sayomaki/add-delete-tag","messageBody":"Add delete tag prefix for edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"cbe1b7db5271f0eb47af61c71a91f7313631de62","isMergeCommit":false,"messageTitle":"Update user guide to contain help command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"e122d5c6aaf92d88b816ed260932743741ef1958","isMergeCommit":false,"messageTitle":"Change all references of AB3 to PROperty","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"e311e920a9be547d56c38601a0c358bcfcdeabe4","isMergeCommit":false,"messageTitle":"Change all references of AB3 to PROperty","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"d9b7e3945d0faf2266870147928f6ba976032681","isMergeCommit":false,"messageTitle":"Revert \"Change all references of AB3 to PROperty\"","messageBody":"This reverts commit e122d5c6aaf92d88b816ed260932743741ef1958.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"353d676d067365aa1da8cbfe2d37efaa0b5df817","isMergeCommit":false,"messageTitle":"Update index.md to remove references to AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"92e871311c3d8e2a815a016c93c977d99e934c07","isMergeCommit":false,"messageTitle":"Update index.md to remove links to AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"3647a509dbee2dbaa6b91a5174b686560a88fda9","isMergeCommit":false,"messageTitle":"Update Documentation.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"046bea3cba4e492a85e76cdb2214f608be2d6f1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-remove-references-to-AB3","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b42cbc19f906fbc062f97f8ed6ebc5090dc746b3","isMergeCommit":false,"messageTitle":"Update hyperlink to link to PROperty\u0027s UI.java instead","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6069cbfcccd5a71b93132cd7510a04b91cf8e688","isMergeCommit":false,"messageTitle":"Update model.java hyperlink to link to PROperty\u0027s Model.java","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3707dbe69f8364f51ec1dd9b5e827aab2247211c","isMergeCommit":false,"messageTitle":"Update storage.java hyperlink to link to PROperty\u0027s Storage.java","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d4b90aaf73cd8f582648800adbaaf6305bfeb7a8","isMergeCommit":false,"messageTitle":"Update hyperlinks for Main and MainApp hyperlink","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"54041f16a8ef3a9c6659333c010f35ff1e5249d0","isMergeCommit":false,"messageTitle":"Update hyperlinks for Mainwindow and its fxml file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0a967a237812de3d761700330ea5d169ec57d478","isMergeCommit":false,"messageTitle":"Update hyperlink for Logic.java file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5e63bc3c0913a176beba5493fce7e3661ebf0bc7","isMergeCommit":false,"messageTitle":"Reorder help command arrangement in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":9}}},{"hash":"1e1083a9a30fd6cfe6f6e5e3484d6c9dc76d84ed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-user-guide-help-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab93d330c72a45ef38471790029bbc00916b1cd6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-help-cmd-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f089d45ffc2557b1aabdef8372314093b83cad5c","isMergeCommit":true,"messageTitle":"Merge pull request #88 from sayomaki/update-help-cmd-edit","messageBody":"Update help window for updated usage of edit command","fileTypesAndContributionMap":{}},{"hash":"dfb8048b503ae7d41cb000373e26aac509b09b41","isMergeCommit":false,"messageTitle":"Update helpMessage.png to show in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"BuffWuff1712":[{"date":"2024-09-26","commitResults":[{"hash":"ec2e37e5f0effd8f35f7060ace577bb7aefc95f6","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}}]},{"date":"2024-09-27","commitResults":[{"hash":"db71b7920de06727cb2a6d16c600bee2d77545b2","isMergeCommit":false,"messageTitle":"Update DG with target user profile \u0026 user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":31}}}]},{"date":"2024-10-02","commitResults":[{"hash":"420d61f4fed6c0aa52f8ed7b60d9ba12e6c4d1e0","isMergeCommit":false,"messageTitle":"Edit Developer Guide with minor changes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":38}}},{"hash":"0079f1c77a73ef03b1e76c0f7f27c361ad0039f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-DG-Update-1\u0027 of https://github.com/BuffWuff1712/tp into branch-DG-Update-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ecdcd97e5768af1a1026c55b2134599c5e150bd3","isMergeCommit":true,"messageTitle":"Merge pull request #25 from BuffWuff1712/branch-DG-Update-1","messageBody":"Update target user profile, value proposition and key user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"75cbfa264b728d41572f168b7fb2f79ea58f79c1","isMergeCommit":false,"messageTitle":"Add Bing\u0027s image link to AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-11","commitResults":[{"hash":"db5dd27529f526f6d27ddf1380f071df84d8bd77","isMergeCommit":false,"messageTitle":"Change email and address fields as optional input. Duplicates are checked based on both name and phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":6}}},{"hash":"8cc3b7c96066bede031ca4fec43ddac0bb342d77","isMergeCommit":false,"messageTitle":"Update AddCommandParser test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":11}}},{"hash":"94324e5f0e85cd17509ef922939cc1067d12c653","isMergeCommit":false,"messageTitle":"Update test cases for Parsers, Address, Email and Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":25}}},{"hash":"aa82165fb56549d880a40ffc0a5e51c3f8dedc2a","isMergeCommit":false,"messageTitle":"Remove Address imports in ParserTests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"bbe01c21ea8ae74cca30505818ede4a69d476c06","isMergeCommit":false,"messageTitle":"Edit error message as well as change add message success format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":12}}},{"hash":"f86fb5010f426579fbfdb600e4eaae103f05b602","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-edit-add-command\u0027 of https://github.com/BuffWuff1712/tp into branch-edit-add-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"08365d4c7c1921af55f16c8f8454f9ec44ae3feb","isMergeCommit":false,"messageTitle":"Edit Add command section of UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"52a9e6f5bf465101c9c69b0579ccbc732d83f0ca","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-UG-add-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"de63a6ff1770eaf0f6c4a80f9a70aca4f5b64954","isMergeCommit":true,"messageTitle":"Merge pull request #84 from Vatinius/branch-update-user-guide-help-command","messageBody":"Reorder help command arrangement in User Guide","fileTypesAndContributionMap":{}},{"hash":"ad8a5445be92fab753484b642bfb3ccf8f8fc066","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-UserGuide-Help-Remark","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"329f931d8a6182b7671fcccff0afb6a199852856","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Vatinius/branch-update-help-menu-screenshot-in-user-guide","messageBody":"Update helpMessage.png to show in User Guide","fileTypesAndContributionMap":{}}]}],"Tkaixiang":[{"date":"2024-09-27","commitResults":[{"hash":"ae90dfd8e296bd109dc7560d756384bf16e8ccd1","isMergeCommit":false,"messageTitle":"Update About Us for tkaixiang","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f9514bc249edd8dc1984a952dd7ac6e7c351fdab","isMergeCommit":false,"messageTitle":"Add Team About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"40de367840e631bb19112cd65cdec8e7b41bc421","isMergeCommit":false,"messageTitle":"NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":49}}}]},{"date":"2024-09-28","commitResults":[{"hash":"cc9df6b6ccd7abc755fb8b7f4f753a35d27e63f6","isMergeCommit":false,"messageTitle":"Add Remarks Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":36},"test-code":{"insertions":91,"deletions":6}}},{"hash":"b00ee51b7708dc3df3b441e6b6e77d35c9555584","isMergeCommit":false,"messageTitle":"Working remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":3},"test-code":{"insertions":4,"deletions":4}}},{"hash":"7511b401aba1c5e0c0e154674360994c4068a038","isMergeCommit":false,"messageTitle":"Fix all tests + Bug fix for add command without optionals","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":18,"deletions":13}}}]},{"date":"2024-10-01","commitResults":[{"hash":"0b54ae54d6b6364c524f596e59b717a85729a0f6","isMergeCommit":true,"messageTitle":"Merge pull request #24 from BuffWuff1712/branch-profile-pic","messageBody":" Add Bing\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"6936b383482f050bd5d220da0b26b2a47ce84382","isMergeCommit":true,"messageTitle":"Merge pull request #23 from BuffWuff1712/branch-AboutUs-UpdateTwo","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}},{"hash":"2ceb3c383575bd6e2c5ecde528913cbb8f7d4a84","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93ec51eca624f44cf8f4f09ee880fba322f9d37c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from sayomaki/update-aboutus","messageBody":"Update AboutUs page for sayomaki","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"a9ead8fcfeaa717e9b7347caa407efd438787e42","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-AboutUs_tkaixiang","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd0389f2743c75c1b0e6d7d1204cc16b99d65794","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Tkaixiang/branch-Update-AboutUs_tkaixiang","messageBody":"Update About Us for tkaixiang","fileTypesAndContributionMap":{}},{"hash":"da29d2a180a25f5b79634b10f4608e287704f5dd","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Vatinius/branch-add-about-us","messageBody":"Update about us for Dylan","fileTypesAndContributionMap":{}},{"hash":"94ddbbefcdd5e6b771fe71d75d0de59bbf1daf0b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from tayxuenye/new-about-us-xuenye","messageBody":"NEW update about us Xuen Ye","fileTypesAndContributionMap":{}},{"hash":"7bc22f2cb0b7af1e681b85217d2a69376d97d767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-teamAboutUs-NFR","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"a029b2dc2d0d2c928771a863af86c961c288fd66","isMergeCommit":true,"messageTitle":"Merge branch \u0027tutorial-adding-command\u0027 of https://github.com/Tkaixiang/tp into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"824873f8e57d26fa6d6c875fe6c4b9f8d1d9a4bc","isMergeCommit":false,"messageTitle":"Add additional tests + remark style changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":9},"test-code":{"insertions":47,"deletions":12}}},{"hash":"0baec7760216fd5b38f893eb850d022f915ffe51","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":19},"test-code":{"insertions":34,"deletions":27}}},{"hash":"e65bcb1b56622dec50656faf917da925ba7e5ba5","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":962,"deletions":86}}}]},{"date":"2024-10-13","commitResults":[{"hash":"7725fce917b9235e2c0efd7e2f7e8d5a41f14c6b","isMergeCommit":false,"messageTitle":"Fix add syntax help","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"94d00312f96a6a8fa286c091d02dec729ca8e396","isMergeCommit":false,"messageTitle":"Edit remark message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4}}},{"hash":"6f1597aeb5ec632210b389eb5dba4600deebb459","isMergeCommit":false,"messageTitle":"Allow edit command for remarks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5}}},{"hash":"09b1d1baa5ae702a628b5bec6776fdd464d5d28e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-add-Remark-Command\u0027 of https://github.com/Tkaixiang/tp into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5a3d2c6efa46c971091d52af2a5ed381853924f","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"429f260a07ca8cfa8f68283e914469e85dbda661","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":4}}},{"hash":"05fa441cfe5747cc012b06119f31f7b4061f2063","isMergeCommit":false,"messageTitle":"fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-10-14","commitResults":[{"hash":"bdc361dc5a8497ecd6c183f487378d3f05274796","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2fd402c7dcee0d4bd80bac0afc8ed0eafa2cd669","isMergeCommit":false,"messageTitle":"Work on feedback","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-15","commitResults":[{"hash":"514dab6975de5071a199c4966c352b259ea302dd","isMergeCommit":false,"messageTitle":"Add remark to success messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5},"test-code":{"insertions":9,"deletions":3}}},{"hash":"3f552e4491decfa88dff2e949eb691e4b00193c0","isMergeCommit":false,"messageTitle":"remove print","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-10-16","commitResults":[{"hash":"a098a27f5ce01cb88509d914ba64286cd12c5d36","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Vatinius/branch-update-user-guide-help-command","messageBody":"Branch update user guide help command","fileTypesAndContributionMap":{}},{"hash":"3819ac35cb6f064ce828f0bf43e9c05809be2e5a","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Vatinius/branch-remove-references-to-AB3","messageBody":"Branch remove references to ab3","fileTypesAndContributionMap":{}},{"hash":"631efec02e8f05f3ab700e0caea818a498d3c99c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from BuffWuff1712/branch-update-UG-add-command","messageBody":"Edit Add command section of UserGuide","fileTypesAndContributionMap":{}},{"hash":"11797cf9b7ab1fbc66c010340e3021c4649c157a","isMergeCommit":false,"messageTitle":"Update remark documentation in DevGuide, UserGuide and Help","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"docs":{"insertions":197,"deletions":170}}},{"hash":"af45a615d9b7afbd49ba26900aaee0b2d19e0c0f","isMergeCommit":false,"messageTitle":"Fix styling + Remark command in Help Menu","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"d8afd212bddefda2bcdfeaae8cbdf31cc05eb0de","isMergeCommit":false,"messageTitle":"Fix Help Menu scrolling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"7e0e9f72f8868d286f3e97e223fec34fa18e9a14","isMergeCommit":true,"messageTitle":"Merge pull request #85 from Tkaixiang/branch-update-UserGuide-Help-Remark","messageBody":"Update Remark Command documentation in DevGuide, UserGuide and Help","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tayxuenye":{"docs":29,"functional-code":138,"test-code":139},"sayomaki":{"docs":22,"functional-code":63,"test-code":17,"other":2},"Vatinius":{"docs":31,"functional-code":75,"test-code":0},"BuffWuff1712":{"docs":27,"functional-code":36,"test-code":2},"Tkaixiang":{"docs":1007,"functional-code":320,"test-code":172}},"authorContributionVariance":{"tayxuenye":3439.3918,"sayomaki":404.67728,"Vatinius":1743.051,"BuffWuff1712":664.6377,"Tkaixiang":63982.934},"authorDisplayNameMap":{"tayxuenye":"CS2103T-F15-3 TAY ..N YE","sayomaki":"CS2103T-F15-3 ZHAN.. YAO","Vatinius":"CS2103T-F15-3 DYLA.. LAM","BuffWuff1712":"CS2103T-F15-3 LOW ..HENG","Tkaixiang":"CS2103T-F15-3 TEO ..IANG"}} +{"authorDailyContributionsMap":{"tayxuenye":[{"date":"2024-09-30","commitResults":[{"hash":"fa9ff2db7b2f527570c203a1bfbed3d917ad8f7f","isMergeCommit":true,"messageTitle":"Merge pull request #5 from tayxuenye/add-photo","messageBody":"Add Xuen Ye\u0027s photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"977dc956d0d287966aed174ee605cf052eb0c989","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"afe73f8181f27b938fac324f4cfbc7b2b44e0cb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-about-us-xuenye","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76e8f05a6f066c46293afaf21b9af1eebc63cee2","isMergeCommit":false,"messageTitle":"Update UI mockup and README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"da67d95e68337e35d3cb1f467b1b11aff47db83f","isMergeCommit":true,"messageTitle":"Merge pull request #46 from tayxuenye/new-update-readme","messageBody":"Update UI mockup and README","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"1382da19228c21c4b5d8e6b59267492dc72fbe3a","isMergeCommit":false,"messageTitle":"Add findtag functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0},"test-code":{"insertions":151,"deletions":0}}},{"hash":"9a6f77fda2dbec7560a69c60e9d6677f7e037f12","isMergeCommit":false,"messageTitle":"Fix formatting issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"750200c36b98d8c691c8ce48dae6010e216f6592","isMergeCommit":true,"messageTitle":"Merge branch \u0027search-by-tags\u0027 of https://github.com/tayxuenye/tp into search-by-tags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ca4b29b0c5fb444060900ff1bf3b4b5c13f9c1b7","isMergeCommit":false,"messageTitle":"Add case insensitive function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-10-15","commitResults":[{"hash":"b872c18e1e77e32b9c0deb3c488bede027474a9a","isMergeCommit":true,"messageTitle":"Merge pull request #68 from Vatinius/branch-fix-add-command-error-message","messageBody":"Fix formatting for add command error message","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"d8bed1447c0ce33163b99ba39a7f73772ea44686","isMergeCommit":false,"messageTitle":"Update findtag command help message in HelpWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"c579d88a53a5e3ba93e62feff7c8e1fcadf188d1","isMergeCommit":false,"messageTitle":"Add findtag command description to UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"ee179db1697d312c6e56fc39991ba62c0a9f2785","isMergeCommit":false,"messageTitle":"Add findtag command to command summary in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"f225a05513e5f78a8931c6d333bee80139a79958","isMergeCommit":true,"messageTitle":"Merge pull request #91 from tayxuenye/update-findtag-userguide","messageBody":"Add findtag command description to UserGuide","fileTypesAndContributionMap":{}},{"hash":"03e4ee891b25049107f8cc52e8122b1758c5224c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-findtag-helpwindow","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47f962c46827cbeda2104ce3bff146e6de78c979","isMergeCommit":true,"messageTitle":"Merge pull request #90 from tayxuenye/update-findtag-helpwindow","messageBody":"Update findtag command help message in HelpWindow","fileTypesAndContributionMap":{}}]}],"sayomaki":[{"date":"2024-10-01","commitResults":[{"hash":"257c293f640836b71248e45e421436c3aca8b30d","isMergeCommit":false,"messageTitle":"Add developer user details for sayomaki","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-03","commitResults":[{"hash":"a50dc31ada421e81334ba5eac3b10605502c33ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-profile-pic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b1a51ae4e609fc4ec5363321d0cc6937b25f929d","isMergeCommit":false,"messageTitle":"Update the repository link and project title for docs","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"a06bee9a89e0b91daa2b0f6c7581454dce620aa4","isMergeCommit":true,"messageTitle":"Merge pull request #50 from sayomaki/update-docs-title","messageBody":"Update project title for documentation","fileTypesAndContributionMap":{}},{"hash":"08afabaf22212c1dc22b5279995dd72fa0ae6bd3","isMergeCommit":false,"messageTitle":"Add use case for finding a person using keywords","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":1}}}]},{"date":"2024-10-14","commitResults":[{"hash":"efd211473aa57f84c225f761f064217660739337","isMergeCommit":false,"messageTitle":"Rename edit person descriptor tags to add tags","messageBody":"This is so that it indicates adding of new tags instead of replacing\nthe current tags for the person, and replacement is only done for\nthe empty tag case.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":5,"deletions":5}}},{"hash":"3b34a30e5c9c98c0da3e2ee996bedd0275266f6a","isMergeCommit":false,"messageTitle":"Add delete tag prefix support and handling of tag deletion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"611ae50941180407e107ae093973c68c098c7f06","isMergeCommit":false,"messageTitle":"Update edit command usage and register delete tag prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"5fd379820194ec579ecea817cd3c298063e698dc","isMergeCommit":false,"messageTitle":"Add method to compute new set of tags for a person","messageBody":"This method combines adding the new tags for a person with their\nexisting tags, and removes the tags to be deleted from the person,\nand returns the final set of tags for the person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":1}}},{"hash":"ceae2cd9fdfb08040a8aa355a276e1053afbbb48","isMergeCommit":false,"messageTitle":"Include comment to note that deleting tag is ignored if tag not present","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"061cd725948b91856dd4fefca3767d2032425ef3","isMergeCommit":false,"messageTitle":"Add some simple test cases for delete tag parsing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"437a9baba9ea83e57c037b207b4c4ab0f6920c32","isMergeCommit":false,"messageTitle":"Update test cases for failing toString method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6ecf92e2b35d85908b73ee29795bb23a2fe5b8ca","isMergeCommit":false,"messageTitle":"Add delete tag to string method for edit person descriptor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":1}}},{"hash":"2f05cbdba8016854e5d03cdc84c6d8297b3d88a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-delete-tag","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"ab703ca725d9344e3b0dae43dea0f5f53eb61971","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-delete-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c74db7bfe931d6fc8c1377902a68190e3316ad4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b42566f4361f2796b39a5dd9703e29cfb275cd4a","isMergeCommit":true,"messageTitle":"Merge pull request #62 from Tkaixiang/branch-add-Remark-Command","messageBody":"Adds the Remark command for Customers","fileTypesAndContributionMap":{}},{"hash":"82a54eaf5139d252b2139ace24d205d706ef9a1b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-delete-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10b6dbf55637c73329ca18d679d9672295fdc15d","isMergeCommit":false,"messageTitle":"Fix some overlooked merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-10-16","commitResults":[{"hash":"b42204dcf071bfa08912d546f21559f2ce3f66aa","isMergeCommit":true,"messageTitle":"Merge pull request #87 from Tkaixiang/branch-fix-Help-Menu","messageBody":"Fix Help Menu scrolling","fileTypesAndContributionMap":{}},{"hash":"b2282118fd21a2d7a8d63889196a5d405ca6e7e1","isMergeCommit":false,"messageTitle":"Update help window to show updated usage for edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"fded8d4d5a59d9c75bc39cb871267c03af25a311","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-help-cmd-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c30e4b9d8bbf4e37c7f3b64b977adce6b8eac7f8","isMergeCommit":false,"messageTitle":"Remove unnecessary bullet point in help command display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"484337d6fa3d0dbca2646465e541d1da610ac8b6","isMergeCommit":false,"messageTitle":"Update User Guide for edit command with delete tag usage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"fd09033810c5c07179e145c0957d3ae591c16d08","isMergeCommit":false,"messageTitle":"Remove additional whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a5edb368c4a256cd750dd6ebbf894aa0f2208cc7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-user-guide-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"851d0cda7ab54e4f29741cf7136aa24f3709806f","isMergeCommit":true,"messageTitle":"Merge pull request #92 from sayomaki/update-user-guide-edit","messageBody":"Update User Guide for edit command with delete tag usage","fileTypesAndContributionMap":{}},{"hash":"027dd0eefd49a430a78383700aa5c2b5e0a26f0c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-help-menu-screenshot-in-user-guide","messageBody":"","fileTypesAndContributionMap":{}}]}],"Vatinius":[{"date":"2024-10-01","commitResults":[{"hash":"4ba742807801dac6c9aeaff75eabad622e7d9f69","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":44}}}]},{"date":"2024-10-02","commitResults":[{"hash":"f292dede7420c714540e366dcf76663066636cdd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fccf08783703df29ac8fad9a747f60ca17215079","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-DG-Update-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4ebf40fd440afc3c9718818a91c0dd5ebc4df18","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Tkaixiang/branch-teamAboutUs-NFR","messageBody":"Update AboutUs page for Team and DG Non-Functional Requirements","fileTypesAndContributionMap":{}},{"hash":"1cd83f15ff9bdc775b33d77121ce8b9f2a77b130","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-DG-Update-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1bd0923969ccbfde4a205b1a1ff2ddcbd73ceb0f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-update-readme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f30a2e6018b5c70b71394b74e3b7fafb2fa6d2cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-update-readme","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"4ce9e98dd825cbbd952bf46454e886869af4b78a","isMergeCommit":true,"messageTitle":"Merge pull request #51 from sayomaki/update-use-cases","messageBody":"Update use cases","fileTypesAndContributionMap":{}},{"hash":"932311a65db7dcbe6da9355223351cff479589c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-profile-pic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0de2c169cea17490eec7fd3fdce900f6c27f838f","isMergeCommit":true,"messageTitle":"Merge pull request #53 from BuffWuff1712/branch-profile-pic","messageBody":"Add Bing\u0027s image link to AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"1a8a1dfecce134943b23cf557e4fc1ba374d7960","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Tkaixiang/branch-update-Developer-Guide","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"96d1ad13462c727bd2ea77aba27fb2768823d629","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b3000cfff04b963b35f616382c8036509728d3f7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-edit-add-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"1b89af6d093cecf1fced0f18c1d058fd67ad3ea7","isMergeCommit":true,"messageTitle":"Merge pull request #60 from BuffWuff1712/branch-edit-add-command","messageBody":"Edit Add Command","fileTypesAndContributionMap":{}},{"hash":"3643a53a92193c7c99e6c61a5b9103e4e6923d9c","isMergeCommit":false,"messageTitle":"Implement better help feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":40}}},{"hash":"73252b60a3448109546bc1b1517d41b1e1543e9c","isMergeCommit":false,"messageTitle":"Change minimum height of help GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5d1f804e407cd913bef883884fb77da86ef943a0","isMergeCommit":false,"messageTitle":"Fix formatting to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":25}}},{"hash":"f28fabcb6087f553cded257622d4652869e4d11e","isMergeCommit":false,"messageTitle":"Fix formatting of HELP_FIND_COMMAND","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cd0f09fd8f5930b1c09115f2946df9aab5736dfb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into search-by-tags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cdea25f2664c303e574c72ed13aeba9f344421a4","isMergeCommit":false,"messageTitle":"Increase minimum height of help GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"932ef1cfa9e64c0cd2cedd41db0dc06045c84a2e","isMergeCommit":false,"messageTitle":"Fix formatting of HELP_EDIT_COMMAND","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"89bdba70f7cf8f9f039f9e0bf5fd2f7f160e16f7","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tayxuenye/search-by-tags","messageBody":"Add findtag functionality","fileTypesAndContributionMap":{}},{"hash":"e6b9154e05a00ad7accb68238469a181276943a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-improve-help-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47abd53908dee57568859bd3df8d6b88ee128e40","isMergeCommit":false,"messageTitle":"Add findtag command to help","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":18}}},{"hash":"9c6a78e4db275868c2e1ed11115811e18a5214b8","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Vatinius/branch-improve-help-feature","messageBody":"Improve help feature and its GUI","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"fe5fd4dc7a01653941504e3e6044e221c6bc38a0","isMergeCommit":false,"messageTitle":"Fix formatting for add command error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0e5c9330cc1e16bcd04c3509a2ba74e4467a4a3e","isMergeCommit":false,"messageTitle":"Update help information","messageBody":"Added instructions on how to exit the command using the CLI. Resolved extra unneeded newline at HelpWindow\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"1fc57d29d3a4e3a09fe362628307edce61fa1544","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-improve-help-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b88e1c04f3d452ba66366565ac439811417ad2f","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Vatinius/branch-improve-help-feature","messageBody":"Update help information","fileTypesAndContributionMap":{}},{"hash":"aa3972b3166e0bcc447cd50fcc53149255f45176","isMergeCommit":true,"messageTitle":"Merge pull request #67 from sayomaki/add-delete-tag","messageBody":"Add delete tag prefix for edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"cbe1b7db5271f0eb47af61c71a91f7313631de62","isMergeCommit":false,"messageTitle":"Update user guide to contain help command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"e122d5c6aaf92d88b816ed260932743741ef1958","isMergeCommit":false,"messageTitle":"Change all references of AB3 to PROperty","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"e311e920a9be547d56c38601a0c358bcfcdeabe4","isMergeCommit":false,"messageTitle":"Change all references of AB3 to PROperty","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"d9b7e3945d0faf2266870147928f6ba976032681","isMergeCommit":false,"messageTitle":"Revert \"Change all references of AB3 to PROperty\"","messageBody":"This reverts commit e122d5c6aaf92d88b816ed260932743741ef1958.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"353d676d067365aa1da8cbfe2d37efaa0b5df817","isMergeCommit":false,"messageTitle":"Update index.md to remove references to AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"92e871311c3d8e2a815a016c93c977d99e934c07","isMergeCommit":false,"messageTitle":"Update index.md to remove links to AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"3647a509dbee2dbaa6b91a5174b686560a88fda9","isMergeCommit":false,"messageTitle":"Update Documentation.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"046bea3cba4e492a85e76cdb2214f608be2d6f1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-remove-references-to-AB3","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b42cbc19f906fbc062f97f8ed6ebc5090dc746b3","isMergeCommit":false,"messageTitle":"Update hyperlink to link to PROperty\u0027s UI.java instead","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6069cbfcccd5a71b93132cd7510a04b91cf8e688","isMergeCommit":false,"messageTitle":"Update model.java hyperlink to link to PROperty\u0027s Model.java","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3707dbe69f8364f51ec1dd9b5e827aab2247211c","isMergeCommit":false,"messageTitle":"Update storage.java hyperlink to link to PROperty\u0027s Storage.java","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d4b90aaf73cd8f582648800adbaaf6305bfeb7a8","isMergeCommit":false,"messageTitle":"Update hyperlinks for Main and MainApp hyperlink","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"54041f16a8ef3a9c6659333c010f35ff1e5249d0","isMergeCommit":false,"messageTitle":"Update hyperlinks for Mainwindow and its fxml file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0a967a237812de3d761700330ea5d169ec57d478","isMergeCommit":false,"messageTitle":"Update hyperlink for Logic.java file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5e63bc3c0913a176beba5493fce7e3661ebf0bc7","isMergeCommit":false,"messageTitle":"Reorder help command arrangement in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":9}}},{"hash":"1e1083a9a30fd6cfe6f6e5e3484d6c9dc76d84ed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-user-guide-help-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab93d330c72a45ef38471790029bbc00916b1cd6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-help-cmd-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f089d45ffc2557b1aabdef8372314093b83cad5c","isMergeCommit":true,"messageTitle":"Merge pull request #88 from sayomaki/update-help-cmd-edit","messageBody":"Update help window for updated usage of edit command","fileTypesAndContributionMap":{}},{"hash":"dfb8048b503ae7d41cb000373e26aac509b09b41","isMergeCommit":false,"messageTitle":"Update helpMessage.png to show in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"BuffWuff1712":[{"date":"2024-09-26","commitResults":[{"hash":"ec2e37e5f0effd8f35f7060ace577bb7aefc95f6","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}}]},{"date":"2024-09-27","commitResults":[{"hash":"db71b7920de06727cb2a6d16c600bee2d77545b2","isMergeCommit":false,"messageTitle":"Update DG with target user profile \u0026 user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":31}}}]},{"date":"2024-10-02","commitResults":[{"hash":"420d61f4fed6c0aa52f8ed7b60d9ba12e6c4d1e0","isMergeCommit":false,"messageTitle":"Edit Developer Guide with minor changes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":38}}},{"hash":"0079f1c77a73ef03b1e76c0f7f27c361ad0039f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-DG-Update-1\u0027 of https://github.com/BuffWuff1712/tp into branch-DG-Update-1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ecdcd97e5768af1a1026c55b2134599c5e150bd3","isMergeCommit":true,"messageTitle":"Merge pull request #25 from BuffWuff1712/branch-DG-Update-1","messageBody":"Update target user profile, value proposition and key user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"75cbfa264b728d41572f168b7fb2f79ea58f79c1","isMergeCommit":false,"messageTitle":"Add Bing\u0027s image link to AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-11","commitResults":[{"hash":"db5dd27529f526f6d27ddf1380f071df84d8bd77","isMergeCommit":false,"messageTitle":"Change email and address fields as optional input. Duplicates are checked based on both name and phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":6}}},{"hash":"8cc3b7c96066bede031ca4fec43ddac0bb342d77","isMergeCommit":false,"messageTitle":"Update AddCommandParser test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":11}}},{"hash":"94324e5f0e85cd17509ef922939cc1067d12c653","isMergeCommit":false,"messageTitle":"Update test cases for Parsers, Address, Email and Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":25}}},{"hash":"aa82165fb56549d880a40ffc0a5e51c3f8dedc2a","isMergeCommit":false,"messageTitle":"Remove Address imports in ParserTests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"bbe01c21ea8ae74cca30505818ede4a69d476c06","isMergeCommit":false,"messageTitle":"Edit error message as well as change add message success format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":12}}},{"hash":"f86fb5010f426579fbfdb600e4eaae103f05b602","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-edit-add-command\u0027 of https://github.com/BuffWuff1712/tp into branch-edit-add-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"08365d4c7c1921af55f16c8f8454f9ec44ae3feb","isMergeCommit":false,"messageTitle":"Edit Add command section of UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"52a9e6f5bf465101c9c69b0579ccbc732d83f0ca","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-UG-add-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"de63a6ff1770eaf0f6c4a80f9a70aca4f5b64954","isMergeCommit":true,"messageTitle":"Merge pull request #84 from Vatinius/branch-update-user-guide-help-command","messageBody":"Reorder help command arrangement in User Guide","fileTypesAndContributionMap":{}},{"hash":"ad8a5445be92fab753484b642bfb3ccf8f8fc066","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-UserGuide-Help-Remark","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"329f931d8a6182b7671fcccff0afb6a199852856","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Vatinius/branch-update-help-menu-screenshot-in-user-guide","messageBody":"Update helpMessage.png to show in User Guide","fileTypesAndContributionMap":{}},{"hash":"5bf2793cb32d579b96b2e505276bae3c28270a80","isMergeCommit":false,"messageTitle":"Move help command texts to respective files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":40}}},{"hash":"0ce690ece9c0e0178bb4f9fa3efe0f041415adcc","isMergeCommit":false,"messageTitle":"Remove whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"720a3ae16296f54cbc097b6f2a6c84ce86ed19e2","isMergeCommit":false,"messageTitle":"changed whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"32bf70a60ac0abd330d55c19f017f0067928d858","isMergeCommit":true,"messageTitle":"Merge pull request #95 from BuffWuff1712/branch-move-help-command-texts","messageBody":"Move help command texts to respective files","fileTypesAndContributionMap":{}}]}],"Tkaixiang":[{"date":"2024-09-27","commitResults":[{"hash":"ae90dfd8e296bd109dc7560d756384bf16e8ccd1","isMergeCommit":false,"messageTitle":"Update About Us for tkaixiang","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f9514bc249edd8dc1984a952dd7ac6e7c351fdab","isMergeCommit":false,"messageTitle":"Add Team About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"40de367840e631bb19112cd65cdec8e7b41bc421","isMergeCommit":false,"messageTitle":"NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":49}}}]},{"date":"2024-09-28","commitResults":[{"hash":"cc9df6b6ccd7abc755fb8b7f4f753a35d27e63f6","isMergeCommit":false,"messageTitle":"Add Remarks Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":36},"test-code":{"insertions":91,"deletions":6}}},{"hash":"b00ee51b7708dc3df3b441e6b6e77d35c9555584","isMergeCommit":false,"messageTitle":"Working remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":3},"test-code":{"insertions":4,"deletions":4}}},{"hash":"7511b401aba1c5e0c0e154674360994c4068a038","isMergeCommit":false,"messageTitle":"Fix all tests + Bug fix for add command without optionals","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":18,"deletions":13}}}]},{"date":"2024-10-01","commitResults":[{"hash":"0b54ae54d6b6364c524f596e59b717a85729a0f6","isMergeCommit":true,"messageTitle":"Merge pull request #24 from BuffWuff1712/branch-profile-pic","messageBody":" Add Bing\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"6936b383482f050bd5d220da0b26b2a47ce84382","isMergeCommit":true,"messageTitle":"Merge pull request #23 from BuffWuff1712/branch-AboutUs-UpdateTwo","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}},{"hash":"2ceb3c383575bd6e2c5ecde528913cbb8f7d4a84","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93ec51eca624f44cf8f4f09ee880fba322f9d37c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from sayomaki/update-aboutus","messageBody":"Update AboutUs page for sayomaki","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"a9ead8fcfeaa717e9b7347caa407efd438787e42","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-AboutUs_tkaixiang","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd0389f2743c75c1b0e6d7d1204cc16b99d65794","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Tkaixiang/branch-Update-AboutUs_tkaixiang","messageBody":"Update About Us for tkaixiang","fileTypesAndContributionMap":{}},{"hash":"da29d2a180a25f5b79634b10f4608e287704f5dd","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Vatinius/branch-add-about-us","messageBody":"Update about us for Dylan","fileTypesAndContributionMap":{}},{"hash":"94ddbbefcdd5e6b771fe71d75d0de59bbf1daf0b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from tayxuenye/new-about-us-xuenye","messageBody":"NEW update about us Xuen Ye","fileTypesAndContributionMap":{}},{"hash":"7bc22f2cb0b7af1e681b85217d2a69376d97d767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-teamAboutUs-NFR","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"a029b2dc2d0d2c928771a863af86c961c288fd66","isMergeCommit":true,"messageTitle":"Merge branch \u0027tutorial-adding-command\u0027 of https://github.com/Tkaixiang/tp into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"824873f8e57d26fa6d6c875fe6c4b9f8d1d9a4bc","isMergeCommit":false,"messageTitle":"Add additional tests + remark style changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":9},"test-code":{"insertions":47,"deletions":12}}},{"hash":"0baec7760216fd5b38f893eb850d022f915ffe51","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":19},"test-code":{"insertions":34,"deletions":27}}},{"hash":"e65bcb1b56622dec50656faf917da925ba7e5ba5","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":962,"deletions":86}}}]},{"date":"2024-10-13","commitResults":[{"hash":"7725fce917b9235e2c0efd7e2f7e8d5a41f14c6b","isMergeCommit":false,"messageTitle":"Fix add syntax help","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"94d00312f96a6a8fa286c091d02dec729ca8e396","isMergeCommit":false,"messageTitle":"Edit remark message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4}}},{"hash":"6f1597aeb5ec632210b389eb5dba4600deebb459","isMergeCommit":false,"messageTitle":"Allow edit command for remarks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5}}},{"hash":"09b1d1baa5ae702a628b5bec6776fdd464d5d28e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-add-Remark-Command\u0027 of https://github.com/Tkaixiang/tp into branch-add-Remark-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5a3d2c6efa46c971091d52af2a5ed381853924f","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"429f260a07ca8cfa8f68283e914469e85dbda661","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":4}}},{"hash":"05fa441cfe5747cc012b06119f31f7b4061f2063","isMergeCommit":false,"messageTitle":"fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-10-14","commitResults":[{"hash":"bdc361dc5a8497ecd6c183f487378d3f05274796","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2fd402c7dcee0d4bd80bac0afc8ed0eafa2cd669","isMergeCommit":false,"messageTitle":"Work on feedback","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-15","commitResults":[{"hash":"514dab6975de5071a199c4966c352b259ea302dd","isMergeCommit":false,"messageTitle":"Add remark to success messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5},"test-code":{"insertions":9,"deletions":3}}},{"hash":"3f552e4491decfa88dff2e949eb691e4b00193c0","isMergeCommit":false,"messageTitle":"remove print","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-10-16","commitResults":[{"hash":"a098a27f5ce01cb88509d914ba64286cd12c5d36","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Vatinius/branch-update-user-guide-help-command","messageBody":"Branch update user guide help command","fileTypesAndContributionMap":{}},{"hash":"3819ac35cb6f064ce828f0bf43e9c05809be2e5a","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Vatinius/branch-remove-references-to-AB3","messageBody":"Branch remove references to ab3","fileTypesAndContributionMap":{}},{"hash":"631efec02e8f05f3ab700e0caea818a498d3c99c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from BuffWuff1712/branch-update-UG-add-command","messageBody":"Edit Add command section of UserGuide","fileTypesAndContributionMap":{}},{"hash":"11797cf9b7ab1fbc66c010340e3021c4649c157a","isMergeCommit":false,"messageTitle":"Update remark documentation in DevGuide, UserGuide and Help","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"docs":{"insertions":197,"deletions":170}}},{"hash":"af45a615d9b7afbd49ba26900aaee0b2d19e0c0f","isMergeCommit":false,"messageTitle":"Fix styling + Remark command in Help Menu","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"d8afd212bddefda2bcdfeaae8cbdf31cc05eb0de","isMergeCommit":false,"messageTitle":"Fix Help Menu scrolling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"7e0e9f72f8868d286f3e97e223fec34fa18e9a14","isMergeCommit":true,"messageTitle":"Merge pull request #85 from Tkaixiang/branch-update-UserGuide-Help-Remark","messageBody":"Update Remark Command documentation in DevGuide, UserGuide and Help","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tayxuenye":{"docs":29,"functional-code":135,"test-code":139},"sayomaki":{"docs":22,"functional-code":59,"test-code":17,"other":2},"Vatinius":{"docs":31,"functional-code":50,"test-code":0},"BuffWuff1712":{"docs":27,"functional-code":82,"test-code":2},"Tkaixiang":{"docs":1007,"functional-code":316,"test-code":172}},"authorContributionVariance":{"tayxuenye":3439.3918,"sayomaki":404.67728,"Vatinius":1743.051,"BuffWuff1712":907.0869,"Tkaixiang":63982.934},"authorDisplayNameMap":{"tayxuenye":"CS2103T-F15-3 TAY ..N YE","sayomaki":"CS2103T-F15-3 ZHAN.. YAO","Vatinius":"CS2103T-F15-3 DYLA.. LAM","BuffWuff1712":"CS2103T-F15-3 LOW ..HENG","Tkaixiang":"CS2103T-F15-3 TEO ..IANG"}} diff --git a/AY2425S1-CS2103T-T08-3_tp_master/authorship.json b/AY2425S1-CS2103T-T08-3_tp_master/authorship.json index ba63afc6..14ff5a9b 100644 --- a/AY2425S1-CS2103T-T08-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T08-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"* MedDict is **a project based on a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":"* The original project MedDict was based on simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":"* MedDict is a desktop application designed for physiotherapists who manage a large number of patients. It simplifies data entry and retrieval, allowing quick access to contact details, patient conditions, and the progress of recurring or long-term patients. The application supports a streamlined process for tracking medical history, patient appointments, and treatment progress.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"* MedDict provides a specialized, all-in-one solution for physiotherapists to manage patient-related information, including medical history, treatment plans, and appointment tracking. The app is optimized for frequent use in clinical settings where speed and accuracy are essential.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"* While MedDict offers a graphical interface, most user interactions happen using a Command Line Interface (CLI), tailored for physiotherapists who prefer typing over mouse interactions and prioritize efficiency in managing patient information.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":"* In other words, MedDict is formulated for physiotherapists who need quick and reliable access to patient information, prefer minimal time spent on data entry, and are comfortable using CLI-based apps for faster updates during consultations.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"* For the detailed documentation of this project, see the **[MedDict Product Website](https://ay2425s1-cs2103t-t08-3.github.io/tp/)**.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":"* * This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":15,"-":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"### Sandy Kristian Waluyo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"\u003cimg src\u003d\"images/sandyk0105.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"[[github](https://github.com/sandyk0105)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"[[portfolio](team/sandyk0105.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":"* Role: Developer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":"### Nigel Teo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":"\u003cimg src\u003d\"images/nigeltzy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":"[[github](http://github.com/nigeltzy)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":"[[portfolio](team/nigeltzy.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":"* Role: Developer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":"### Tham Yao Xiang","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":"\u003cimg src\u003d\"images/tyxiangs.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":"[[github](http://github.com/tyxiangs)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":"### Cheng Zihao","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":"\u003cimg src\u003d\"images/chengzihao123.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":"[[github](http://github.com/chengzihao123)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":"* Responsibilities: UI and testing","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Nigeltzy"},"content":"### Axel","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"shinichi04"},"content":"\u003cimg src\u003d\"images/shinichi04.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"shinichi04"},"content":"[[github](http://github.com/shinichi04)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"shinichi04"},"content":"[[portfolio](team/shinichi04.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"sandyk0105"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":13,"tyxiangs":3,"chengzihao123":5,"-":36,"shinichi04":3,"sandyk0105":1}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"chengzihao123"},"content":"* Physiotherapists who:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"chengzihao123"},"content":" * Has a significant number of patients to manage","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"chengzihao123"},"content":" * Prefers a solution that minimizes data entry and retrieval time","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"chengzihao123"},"content":" * Needs quick access to contact details and conditions of patients","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"chengzihao123"},"content":" * Needs to monitor and track the progress of recurring / returning patients over a long period of time","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"chengzihao123"},"content":" * Prefers typing to mouse interactions and reasonably comfortable using CLI apps","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"chengzihao123"},"content":"**Value proposition**: Provide a more specialised one-stop-for-all medical related information to their patients, schedules, appointments and to keep track of their medical information, progression, medical history etc. The simple CLI app is optimised for physiotherapists’ routine use during consultations, designed for physiotherapists who prioritise speed when accessing and updating patients’ information and details on a regular basis.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"chengzihao123"},"content":"|----------|---------|-----------------------------------------------------------------------|---------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | create a new patient profile | I can record their details and track their progress |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | delete a patient profile | get rid of patient\u0027s information that I no longer need / no longer a patient of mine |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | add recurring appointments for a patient | manage their treatment schedule efficiently |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | update patient details | keep their medical information current |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | add notes to a patient’s record after each session | track their progress over time |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | see which patients have upcoming appointments today | I can prepare in advance |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | view the history of treatments for a patient | monitor their improvement |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | filter patients by condition or treatment type | search patients of a particular condition or treatment for more follow-up actions |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | track my own schedule for the week | I can plan my workload |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | automatically schedule follow-up appointments for recurring patients | I don’t have to manually book each appointment |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | set reminders for follow-up appointments | I don’t miss any important sessions | |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | assign different exercises or treatments to a patient | their care plan is personalized |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | mark a patient’s session as completed | I can know which patients have been seen |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | add vital signs data (e.g., blood pressure, heart rate) for a patient | I can monitor their health metrics |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | track patient feedback after each session | I can adjust their treatment plan if needed |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | set goals for a patient’s treatment plan | I can measure their progress against these goals |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | record billing information for each session | I can manage payments and invoicing |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | access a summary of all my patients | I can get an overview of their conditions and treatments |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | view all the sessions a patient has missed | I can follow up with them and arrange for make-up session |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"chengzihao123"},"content":"| `* ` | Doctor | collaborate with other doctors by sharing patient information | we can coordinate care |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"chengzihao123"},"content":" ","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"chengzihao123"},"content":"### Use cases","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"chengzihao123"},"content":"(For all use cases below, the **System** is the `MedDict` and the **Actor** is the `physiotherapist`, unless specified otherwise)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"chengzihao123"},"content":"**Use case - UC01: Delete a person**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"chengzihao123"},"content":"**MSS**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"chengzihao123"},"content":"1. The user searches for the patient in the list by name","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"chengzihao123"},"content":"2. MedDict displays all matching patients","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"chengzihao123"},"content":"3. The user selects the specific patient profile to delete","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"chengzihao123"},"content":"4. The user requests to delete a specific patient in the list","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"chengzihao123"},"content":"5. MedDict deletes the patient profile from the system and notifies the user that the profile has been successfully deleted","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"chengzihao123"},"content":" Use case ends.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"chengzihao123"},"content":"**Extensions**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"chengzihao123"},"content":"* 2a: The list of patients is empty.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"chengzihao123"},"content":" * 2a1. MedDict informs the doctor that no patients are available for deletion","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"chengzihao123"},"content":"* 3a. The given index or patient selection is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"chengzihao123"},"content":" * 3a1. MedDict shows an error message indicating that the selected patient profile is invalid or does not exist","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"chengzihao123"},"content":" Use case resumes from step 2","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"chengzihao123"},"content":" ","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"chengzihao123"},"content":"**Use case - UC02: Add Appointment**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"chengzihao123"},"content":"1. User requests to make a new appointment","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"chengzihao123"},"content":"2. MedDict displays the list of available time slots for appointments","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"chengzihao123"},"content":"3. User selects a specific time slot","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"chengzihao123"},"content":"4. User searches for the patient by name or the ID","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"chengzihao123"},"content":"5. User requests to assign the time slot to a patient","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"chengzihao123"},"content":"6. MedDict assigns the selected time slot to the chosen patient and confirms the appointment","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"chengzihao123"},"content":"* 2a: No available time slots.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"chengzihao123"},"content":" * 2a1. MedDict notifies the doctor that no time slots are available","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"chengzihao123"},"content":" * 2a2. The doctor chooses to wait for a cancellation or manually opens additional time slots","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"chengzihao123"},"content":"* 4a. The selected patient is not found in the system.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"chengzihao123"},"content":" * 4a1. MedDict informs the doctor that the patient is not found","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"chengzihao123"},"content":" * 4a2. The doctor is given the option to create a new patient profile or re-enter the patient\u0027s name","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"chengzihao123"},"content":" Use case resumes from step 4","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"chengzihao123"},"content":"**Use case - UC03: Mark patient’s appointment as completed**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"chengzihao123"},"content":"**MSS**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"chengzihao123"},"content":"1. User requests to view all his appointments for the day","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"chengzihao123"},"content":"2. MedDict displays all appointments that the user has for the day","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"chengzihao123"},"content":"3. User selects the patient that he has just viewed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"chengzihao123"},"content":"4. User requests to mark the patient’s appointment status as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"chengzihao123"},"content":"5. System marks the patient’s appointment for the day as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"chengzihao123"},"content":"**Extensions**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"chengzihao123"},"content":"* 2a: The user has no patients for that day.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"chengzihao123"},"content":" * 2a1. MedDict displays an empty appointment list for the day","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"chengzihao123"},"content":"* 3a. The patient selected is invalid / doesn\u0027t exist.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"chengzihao123"},"content":" * 3a1. MedDict alerts the user that the selected patient profile is invalid or does not exist","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"chengzihao123"},"content":" Use case resumes from step 2","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"chengzihao123"},"content":" ","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"chengzihao123"},"content":"* 4a. The patient’s status has already been marked as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"chengzihao123"},"content":" * 4a1. MedDict alerts to the user that the appointment has already been marked as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"chengzihao123"},"content":"1. Should work on any mainstream OS as long as it has Java 17 or above installed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"chengzihao123"},"content":"2. Should run efficiently on low-powered machines, such as older clinic computers, without consuming excessive CPU or memory resources (less than 100 MB of RAM usage)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"chengzihao123"},"content":"3. The system should allow physiotherapists to find a contact by name or ID within 1-2 seconds to ensure minimal disruption during patient interactions.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"chengzihao123"},"content":"4. Command structures should be simple enough for physiotherapists to memorize frequently used operations","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"chengzihao123"},"content":"5. The searching functionality should not be case-sensitive.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"chengzihao123"},"content":"6. The system must be able to handle unexpected errors (e.g., incorrect input, unavailable commands) gracefully by providing clear, actionable error messages","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"chengzihao123"},"content":"7. The system should automatically back up patient contact data at least once per day to ensure data integrity. Backups should be encrypted and stored in a secure location","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"chengzihao123"},"content":"8. All sensitive contact information, including patient names, phone numbers, and addresses, must be encrypted when stored on disk.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"chengzihao123"},"content":"9. Only authorized users (e.g., licensed physiotherapists) should be able to access or modify patient details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"chengzihao123"},"content":"10. Authorized users will only have access to the patients under their patient-doctor bond (PDB).","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"chengzihao123"},"content":"11. should also be scalable to accommodate larger clinics that may need to store 10,000+ patient records","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"tyxiangs"},"content":"* **Patient-Doctor Bond (PDB)**: A relationship between a doctor and a patient where the doctor is assigned to the patient for physiotherapy treatment","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"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","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"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","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"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","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"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","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"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","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":1,"tyxiangs":1,"chengzihao123":106,"-":355}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"MedDict is a **desktop application designed for physiotherapists** who manage a large number of patients. It simplifies data entry and retrieval, allowing quick access to contact details, patient conditions, and the progress of recurring or long-term patients. The application supports a streamlined process for tracking medical history, patient appointments, and treatment progress.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"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","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":1,"-":198}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"title: \"MedDict\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"repository: \"AY2425S1-CS2103T-T08-3/tp\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"chengzihao123":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"chengzihao123"},"content":" content: \"MedDict\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"chengzihao123":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"title: MedDict","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":"**MedDict**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":"MedDict is a desktop application designed for physiotherapists who manage a large number of patients. It simplifies data entry and retrieval, allowing quick access to contact details, patient conditions, and the progress of recurring or long-term patients. The application supports a streamlined process for tracking medical history, patient appointments, and treatment progress.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":"MedDict provides a specialized, all-in-one solution for physiotherapists to manage patient-related information, including medical history, treatment plans, and appointment tracking. The app is optimized for frequent use in clinical settings where speed and accuracy are essential.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"While MedDict offers a graphical interface, most user interactions happen using a Command Line Interface (CLI), tailored for physiotherapists who prefer typing over mouse interactions and prioritize efficiency in managing patient information.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"In other words, MedDict is formulated for physiotherapists who need quick and reliable access to patient information, prefer minimal time spent on data entry, and are comfortable using CLI-based apps for faster updates during consultations.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":"* If you\u0027re interested in using MedDict, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":"* If you are interested in developing MedDict, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"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","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":10,"chengzihao123":1,"-":16}},{"path":"src/main/java/seedu/address/commons/core/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":" * Container for user visible messages.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"public class Messages {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":13}},{"path":"src/main/java/seedu/address/commons/exceptions/AppNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sandyk0105"},"content":"package seedu.address.commons.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"sandyk0105"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"sandyk0105"},"content":" * Represents an error during getting appointment details","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"sandyk0105"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"sandyk0105"},"content":"public class AppNotFoundException extends Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sandyk0105"},"content":" public AppNotFoundException(String message) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"sandyk0105"},"content":" super(message);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"sandyk0105"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sandyk0105"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"sandyk0105":10}},{"path":"src/main/java/seedu/address/commons/exceptions/InvalidIdException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.commons.exceptions;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":" * Signals that the input id can\u0027t be found","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"public class InvalidIdException extends IllegalValueException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":" * @param message should contain relevant information on the invalid id","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":" public InvalidIdException(String message) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":" super(message);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":14}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"Invalid Id entered! Check the id that you have entered!\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"chengzihao123":1,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddAppointmentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":" * Adds an appointment to both a patient and a doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":"public class AddAppointmentCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" public static final String COMMAND_WORD \u003d \"addAppointment\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds an appointment with \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" + \"the relevant doctor and patient. \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"[APPOINTMENT_TIME] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[PATIENT_ID] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[DOCTOR_ID] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_REMARK + \"[ADDITIONAL REMARK]\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"2024-12-31 15:23\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"1234 \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"5678\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_REMARK + \"third physiotherapy session\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_ADD_APPOINTMENT_SUCCESS \u003d \"Successfully added appointment to a patient\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" private final Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" private final Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" private final LocalDateTime appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" private final String remarks;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" * Creates an AddAppointmentCommand to add the specified patient and doctor ids","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" public AddAppointmentCommand(LocalDateTime appointmentTime, Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" this.patientId \u003d patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" this.doctorId \u003d doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" this.remarks \u003d remarks;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" ObservableList\u003cPerson\u003e allPersons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" Patient patientToAddAppointment \u003d model.getFilteredPatientById(allPersons, patientId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" Doctor doctorToAddAppointment \u003d model.getFilteredDoctorById(allPersons, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" patientToAddAppointment.addAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId(), remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.addAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId(), remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"chengzihao123"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"chengzihao123"},"content":" return new CommandResult(MESSAGE_ADD_APPOINTMENT_SUCCESS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":68}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"tyxiangs":1,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/DeleteAppointmentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" * deletes an appointment to both a patient and a doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":"public class DeleteAppointmentCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":" public static final String COMMAND_WORD \u003d \"deleteAppointment\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": deletes an appointment \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" + \"between the relevant doctor and patient. \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"[APPOINTMENT_TIME] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[PATIENT_ID] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[DOCTOR_ID]\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"2024-12-31 15:23\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"1234 \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"5678\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_DELETE_APPOINTMENT_SUCCESS \u003d \"Successfully \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" + \"deleted appointment to a patient\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" private final Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" private final Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" private final LocalDateTime appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" * Creates an DeleteAppointmentCommand to add the specified patient and doctor ids","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" public DeleteAppointmentCommand(LocalDateTime appointmentTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" this.patientId \u003d patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" this.doctorId \u003d doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" ObservableList\u003cPerson\u003e allPersons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" Patient patientToAddAppointment \u003d model.getFilteredPatientById(allPersons, patientId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" Doctor doctorToAddAppointment \u003d model.getFilteredDoctorById(allPersons, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" patientToAddAppointment.deleteAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.deleteAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" return new CommandResult(MESSAGE_DELETE_APPOINTMENT_SUCCESS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"tyxiangs"},"content":" Remark updatedRemark \u003d personToEdit.getRemark();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"tyxiangs"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRemark, updatedTags);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"tyxiangs":4,"-":240}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"import java.util.List;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.core.Messages;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the remark of the person identified \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" + PREFIX_REMARK + \"[REMARK]\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" + PREFIX_REMARK + \"Likes to swim.\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" private final Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" this.index \u003d index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tyxiangs"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tyxiangs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tyxiangs"},"content":" * Generates a command execution success message based on whether the remark is added to or removed from","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tyxiangs"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tyxiangs"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tyxiangs"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tyxiangs"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":" // short circuit if same object","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tyxiangs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":" return true;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tyxiangs"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tyxiangs"},"content":" return false;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"tyxiangs"},"content":" // state check","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"tyxiangs"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"tyxiangs"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":91}},{"path":"src/main/java/seedu/address/logic/parser/AddAppointmentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.commons.exceptions.InvalidIdException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.AddAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" * Parses input arguments and creates a new AddAppointmentCommand object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":"public class AddAppointmentCommandParser implements Parser\u003cAddAppointmentCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":" * Parses the given {@code String} of arguments in the context of the AddAppointmentCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" * and returns a AddAppointmentCommand object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" * @param args the input arguments string.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" * @return a AddAppointmentCommand object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":" * @throws ParseException if the user input does not conform to the expected format.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" public AddAppointmentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_DATE, PREFIX_ID, PREFIX_REMARK);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" if (!arePrefixesPresent(argumentMultimap, PREFIX_DATE, PREFIX_ID)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" || !argumentMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" AddAppointmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" patientId \u003d ParserUtil.parsePatientId(argumentMultimap.getAllValues(PREFIX_ID).get(0));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" doctorId \u003d ParserUtil.parseDoctorId(argumentMultimap.getAllValues(PREFIX_ID).get(1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" } catch (InvalidIdException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(MESSAGE_INVALID_ID, e);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" String remarks \u003d argumentMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" String appointmentTime \u003d String.valueOf(requireNonNull(argumentMultimap.getValue(PREFIX_DATE)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime time \u003d ParserUtil.parseDate(appointmentTime);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" return new AddAppointmentCommand(time, patientId, doctorId, remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":64}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" Remark remark \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" Person person \u003d new Person(name, phone, email, address, remark, tagList);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"tyxiangs":3,"-":60}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.AddAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.DeleteAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"chengzihao123"},"content":" case AddAppointmentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"chengzihao123"},"content":" return new AddAppointmentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"chengzihao123"},"content":" case DeleteAppointmentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"chengzihao123"},"content":" return new DeleteAppointmentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":5,"chengzihao123":8,"-":85}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" return values.isEmpty() ? Optional.empty()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"-":77}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" * {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" * arguments","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" * Finds the positions of all occurrences of {@code prefix} in the arguments string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" * @param prefix Prefix to find in the arguments string","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":" * E.g. if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tyxiangs"},"content":" * @param argsString Arguments string in which to search for the prefix","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":" * @param prefix The prefix to find in the arguments string","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" * @param fromIndex The index from which to start searching","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tyxiangs"},"content":" * @return The index of the first valid occurrence of the prefix, or -1 if not found","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"tyxiangs"},"content":" * @param argsString The arguments string containing the value","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"tyxiangs"},"content":" * @param currentPrefixPosition The current prefix position","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"tyxiangs"},"content":" * @param nextPrefixPosition The position of the next prefix","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"tyxiangs"},"content":" * @return The trimmed value of the argument","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"tyxiangs":25,"-":139}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":" public static final Prefix PREFIX_DATE \u003d new Prefix(\"x/\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" public static final Prefix PREFIX_ID \u003d new Prefix(\"z/\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"chengzihao123":4,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteAppointmentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.commons.exceptions.InvalidIdException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.DeleteAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":" * Parses input arguments and creates a new DeleteAppointmentCommand object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":"public class DeleteAppointmentCommandParser implements Parser\u003cDeleteAppointmentCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteAppointmentCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":" * and returns a DeleteAppointmentCommand object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" * @param args the input arguments string.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":" * @return a DeleteAppointmentCommand object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" * @throws ParseException if the user input does not conform to the expected format.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" public DeleteAppointmentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_DATE, PREFIX_ID);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" if (!arePrefixesPresent(argumentMultimap, PREFIX_DATE, PREFIX_ID)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" || !argumentMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" DeleteAppointmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" patientId \u003d ParserUtil.parsePatientId(argumentMultimap.getAllValues(PREFIX_ID).get(0));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" doctorId \u003d ParserUtil.parseDoctorId(argumentMultimap.getAllValues(PREFIX_ID).get(1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" } catch (InvalidIdException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(MESSAGE_INVALID_ID, e);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" String appointmentTime \u003d String.valueOf(requireNonNull(argumentMultimap.getValue(PREFIX_DATE)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime time \u003d ParserUtil.parseDate(appointmentTime);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" return new DeleteAppointmentCommand(time, patientId, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"-":29}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.commons.exceptions.InvalidIdException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_INVALID_PATIENT_ID \u003d \"The patient id you have keyed in is invalid\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_INVALID_DOCTOR_ID \u003d \"The doctor id you have keyed in is invalid\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" * Parses {@code id} into an {@code Id} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" * trimmed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" * @throws InvalidIdException if the specified patient id is invalid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" public static Id parsePatientId(String id) throws InvalidIdException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" Patient patientWithId \u003d Patient.getPatientWithId(trimmedId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" if (patientWithId \u003d\u003d null) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" throw new InvalidIdException(MESSAGE_INVALID_PATIENT_ID);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" return patientWithId.getId();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" * Parses {@code id} into an {@code Id} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" * trimmed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":" * @throws InvalidIdException if the specified doctor id is invalid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"chengzihao123"},"content":" public static Id parseDoctorId(String id) throws InvalidIdException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"chengzihao123"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"chengzihao123"},"content":" Doctor doctorWithId \u003d Doctor.getDoctorWithId(trimmedId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"chengzihao123"},"content":" if (doctorWithId \u003d\u003d null) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"chengzihao123"},"content":" throw new InvalidIdException(MESSAGE_INVALID_DOCTOR_ID);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"chengzihao123"},"content":" return doctorWithId.getId();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"chengzihao123"},"content":" * Parses a {@code String date} into a {@code LocalDateTime}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"chengzihao123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"chengzihao123"},"content":" * @throws ParseException if the given {@code date} is invalid or not in the expected format.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"chengzihao123"},"content":" public static LocalDateTime parseDate(String date) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"chengzihao123"},"content":" String trimmedDate \u003d date.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime time;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime currentDateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"chengzihao123"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"chengzihao123"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"chengzihao123"},"content":" time \u003d LocalDateTime.parse(trimmedDate, formatter);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"chengzihao123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(\"Invalid date-time format, please use yyyy-MM-dd HH:mm.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"chengzihao123"},"content":" if (currentDateTime.isAfter(time)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(\"Invalid time entered. The date and time can\u0027t be in the past!\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"chengzihao123"},"content":" return time;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"chengzihao123":61,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" * Parses input arguments and creates a new RemarkCommand object.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":" * Parses the given {@code String} of arguments in the context of the RemarkCommand","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" * and returns a RemarkCommand object for execution.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" * @param args the input arguments string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" * @return a RemarkCommand object.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" * @throws ParseException if the user input does not conform to the expected format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" requireNonNull(args);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" try {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" return new RemarkCommand(index, new Remark(remark));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":43}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"chengzihao123"},"content":" /** Returns an unmodifiable view of the filtered person list by Id search*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"chengzihao123"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonById(Id id);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"chengzihao123"},"content":" /** Returns the patient via id search*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"chengzihao123"},"content":" Patient getFilteredPatientById(ObservableList\u003cPerson\u003e allPersons, Id id);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"chengzihao123"},"content":" /** Returns the doctor via id search*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"chengzihao123"},"content":" Doctor getFilteredDoctorById(ObservableList\u003cPerson\u003e allPersons, Id id);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"chengzihao123":12,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"chengzihao123"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonById(Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"chengzihao123"},"content":" return filteredPersons.filtered(person -\u003e person.getId().getIdValue() \u003d\u003d id.getIdValue());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"chengzihao123"},"content":" public Patient getFilteredPatientById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"chengzihao123"},"content":" Patient patient \u003d null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"chengzihao123"},"content":" for (Person person : allPersons) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"chengzihao123"},"content":" if (Patient.class.isAssignableFrom(person.getId().getRole())) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"chengzihao123"},"content":" patient \u003d (Patient) person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"chengzihao123"},"content":" break;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"chengzihao123"},"content":" return patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"chengzihao123"},"content":" public Doctor getFilteredDoctorById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"chengzihao123"},"content":" Doctor doctor \u003d null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"chengzihao123"},"content":" for (Person person : allPersons) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"chengzihao123"},"content":" if (Doctor.class.isAssignableFrom(person.getId().getRole())) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"chengzihao123"},"content":" doctor \u003d (Doctor) person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"chengzihao123"},"content":" break;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"chengzihao123"},"content":" return doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"chengzihao123":32,"-":148}},{"path":"src/main/java/seedu/address/model/person/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * A class meant to group all relevant details of an appointment together.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"public class Appointment {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" private Id patientId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" private Id doctorId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" private String remarks;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":" * Creates an appointment instance associated with the specified patient, doctor, and remarks.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param remarks Remarks given by the doctor for the appointment or patient.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" public Appointment(Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" this.patientId \u003d patientId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" this.doctorId \u003d doctorId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" this.remarks \u003d remarks;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" public Id getPatientId() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" return patientId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" public Id getDoctorId() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" return doctorId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" public String getRemarks() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":" return remarks;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":" Appointment appointment \u003d (Appointment) o;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Nigeltzy"},"content":" return Objects.equals(patientId, appointment.patientId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Nigeltzy"},"content":" \u0026\u0026 Objects.equals(doctorId, appointment.doctorId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Nigeltzy"},"content":" \u0026\u0026 Objects.equals(remarks, appointment.remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Nigeltzy"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Nigeltzy"},"content":" return Objects.hash(patientId, doctorId, remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Nigeltzy"},"content":" public String toString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Nigeltzy"},"content":" return \"Appointment: \" + getPatientId() + \" (patient id) with \" + getDoctorId() + \" (doctor id). \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Nigeltzy"},"content":" + \"Remarks: \" + getRemarks();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":66}},{"path":"src/main/java/seedu/address/model/person/Appointmentable.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * Implemented by classes who have appointment-related functionality.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"public interface Appointmentable {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" * Adds a new appointment at the specified time, for the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" public abstract boolean addAppointment(LocalDateTime dateTime, Id patientId, Id doctorId, String remarks);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" * Edit an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" public abstract boolean editAppointment(LocalDateTime dateTime, Id patientId, Id doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" * Delete an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" public abstract boolean deleteAppointment(LocalDateTime dateTime, Id patientId, Id doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" * Gets an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Nigeltzy"},"content":" public abstract Appointment getAppointment(LocalDateTime dateTime, Id patientId, Id doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Nigeltzy"},"content":" * Returns all appointments for the specified person.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Nigeltzy"},"content":" * @return String representing all the appointments of the person, may not be a String.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Nigeltzy"},"content":" public abstract String getAllAppointments();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":56}},{"path":"src/main/java/seedu/address/model/person/Doctor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" * Encapsulates the code required to represent a target user (doctor) of the application.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"public class Doctor extends Person {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" private static ArrayList\u003cDoctor\u003e doctors \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" * @param name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param phone","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" * @param email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" * @param address","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" * @param remark","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" * @param tags","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" public Doctor(Name name, Phone phone, Email email, Address address, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" super(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" Doctor.doctors.add(this);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" public static ArrayList\u003cDoctor\u003e getDoctors() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" return Doctor.doctors;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" public static Doctor getDoctorWithId(String id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" ArrayList\u003cDoctor\u003e allDoctors \u003d getDoctors();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" for (Doctor doctor : allDoctors) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" if (String.valueOf(doctor.getId().getIdValue()).equals(id)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" return doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" return null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":14,"tyxiangs":18,"chengzihao123":10}},{"path":"src/main/java/seedu/address/model/person/History.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import java.util.TreeMap;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sandyk0105"},"content":"import seedu.address.commons.exceptions.AppNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" * Represents a medical history entry associated with a doctor.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" * This class will store details of the appointments or medical interactions.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"public class History {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":" // Nigel\u0027s suggestion","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * Static databse for ALL appointments sorted by Local Date Time","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" private static TreeMap\u003cLocalDateTime, Appointment\u003e appointmentDatabase;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" * List of appointments for this instance of a person.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" private ArrayList\u003cLocalDateTime\u003e appointments;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" private TreeMap\u003cLocalDateTime, TreeMap\u003cInteger, String\u003e\u003e appointmentHistory;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" * Placeholder default constructor TODO.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" public History() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" * Constructs a History object to keep track the appointment history of a single patient.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" * @param date date of the appointment","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" * @param doctorId ID of the doctor that the patient is under","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" * @param remark some remarks that the doctor inputs for the appointment session including","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" * treatment, condition and many others","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" public History(LocalDateTime date, int doctorId, String remark) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" TreeMap\u003cInteger, String\u003e appointmentDetails \u003d new TreeMap\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" appointmentDetails.put(doctorId, remark);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" this.appointmentHistory \u003d new TreeMap\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" appointmentHistory.put(date, appointmentDetails);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" * Constructs a History object to keep track the appointment history of a single patient.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" * Remark is set to null by default","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" * @param date date of the appointment","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" * @param doctorId ID of the doctor that the patient is under","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" public History(LocalDateTime date, int doctorId) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" TreeMap\u003cInteger, String\u003e appointmentDetails \u003d new TreeMap\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" appointmentDetails.put(doctorId, null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" this.appointmentHistory \u003d new TreeMap\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" appointmentHistory.put(date, appointmentDetails);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" * returns the detail of one appointment","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" * @param date date of the appointment","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" * @param doctorId the doctor that the appointment is scheduled under","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"chengzihao123"},"content":" * @return all remarks of that appointment which could include the patient\u0027s condition and treatment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"sandyk0105"},"content":" * @throws AppNotFoundException if the appointment with the given details cannot be found.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"sandyk0105"},"content":" public String getOneAppointmentDetail(LocalDateTime date, int doctorId) throws AppNotFoundException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"sandyk0105"},"content":" TreeMap\u003cInteger, String\u003e appointmentDetails \u003d appointmentHistory.get(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"sandyk0105"},"content":" if (appointmentDetails \u003d\u003d null || !appointmentDetails.containsKey(doctorId)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"sandyk0105"},"content":" throw new AppNotFoundException(\"No such appointment is found.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"sandyk0105"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"sandyk0105"},"content":" return appointmentDetails.get(doctorId);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"chengzihao123"},"content":" * returns the entire appointment history of a patient","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"chengzihao123"},"content":" * @return all the past appointments of a patient","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"chengzihao123"},"content":" public TreeMap\u003cLocalDateTime, TreeMap\u003cInteger, String\u003e\u003e getAllAppointment() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"sandyk0105"},"content":" return new TreeMap\u003c\u003e(appointmentHistory);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Nigeltzy"},"content":" // Nigel\u0027s code suggestion","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Nigeltzy"},"content":" * Adds an appointment to the database with the specified content.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Date \u0026 time of the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Nigeltzy"},"content":" * @return True if appointment was successfully added, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Nigeltzy"},"content":" public boolean addAppointment(LocalDateTime dateTime, Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Nigeltzy"},"content":" // TODO something new Appointment(dateTime, patientId, doctorId, remarks)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Nigeltzy"},"content":" // TODO also need add to this.personAppointments","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Nigeltzy"},"content":" // Other notes: check for duplicate appointments / clashing timeslots w doctor \u0026 patient","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Nigeltzy"},"content":" // What to throw if got error","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Nigeltzy"},"content":" * Deletes the specified appointment with the respective details.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Date \u0026 time of the appointment to delete.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of the patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Nigeltzy"},"content":" * @return True if appointment was successfully deleted, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Nigeltzy"},"content":" public static boolean deleteAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Nigeltzy"},"content":" // TODO something","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Nigeltzy"},"content":" // TODO rmb need delete from this.personAppoitments","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Nigeltzy"},"content":" * Returns a String (or not String) representing all appointments related to that user id.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Nigeltzy"},"content":" * @param id Id of Person to get appointments of.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Nigeltzy"},"content":" * @return String representing all appointments related to the user id provided.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Nigeltzy"},"content":" public static String getAllAppointments(Id id) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Nigeltzy"},"content":" // TODO","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Nigeltzy"},"content":" return \"WIP\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":61,"tyxiangs":12,"chengzihao123":42,"sandyk0105":12}},{"path":"src/main/java/seedu/address/model/person/Id.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * Id class that auto-increments and generates an automated unique Id number for Doctors and Patients separately.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"public class Id {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" private static int patientIdCounter \u003d 0;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" private static int doctorIdCounter \u003d 0;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" private static int personIdCounter \u003d 0; // TODO REMOVE AFTER V1.3","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" private int idValue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" private Class\u003c? extends Person\u003e role;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * Creates an Id that is associated with a specific class.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param personClass Either Doctor or Patient class.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" public Id(Class\u003c? extends Person\u003e personClass) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(personClass);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" this.role \u003d personClass;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" // Check if the class is Patient or Doctor and assign the appropriate ID","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" if (personClass.equals(Patient.class)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" idValue \u003d ++patientIdCounter;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" } else if (personClass.equals(Doctor.class)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" idValue \u003d ++doctorIdCounter;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" } else if (personClass.equals(Person.class)) { // TODO AFTER INTEGRATION","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" idValue \u003d ++personIdCounter;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" } else {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" throw new IllegalArgumentException(\"Invalid class type. Expected Patient or Doctor.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" public int getIdValue() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":" return idValue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" public Class\u003c? extends Person\u003e getRole() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" return role;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":" return \"Id{\" + \"id\u003d\" + idValue + \", role\u003d\" + role.getSimpleName() + \u0027}\u0027;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":48}},{"path":"src/main/java/seedu/address/model/person/Pair.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * A simple class to group two closely related information together.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":" * @param \u003cK\u003e Supposed \"key\".","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" * @param \u003cV\u003e Supposed \"value\".","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":"public class Pair\u003cK, V\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" private K id;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" private V remarks;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * Creates a new Pair instance to group two different elements together.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" * @param id","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param remarks","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" public Pair(K id, V remarks) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" this.id \u003d id;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" this.remarks \u003d remarks;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" public K getId() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" return id;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" public V getRemarks() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" return remarks;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" Pair\u003c?, ?\u003e pair \u003d (Pair\u003c?, ?\u003e) o; // Typecast to Pair","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" // Compare key and value","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" return Objects.equals(id, pair.id) \u0026\u0026 Objects.equals(remarks, pair.remarks);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":47}},{"path":"src/main/java/seedu/address/model/person/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"public class Patient extends Person {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" private static ArrayList\u003cPatient\u003e patients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param name","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" * @param phone","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" * @param email","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" * @param address","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" * @param remark","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" * @param tags","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" public Patient(Name name, Phone phone, Email email, Address address, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" super(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" Patient.patients.add(this);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" public static ArrayList\u003cPatient\u003e getPatients() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" return patients;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" public static Patient getPatientWithId(String id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" ArrayList\u003cPatient\u003e allPatients \u003d getPatients();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" for (Patient patient : allPatients) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" if (String.valueOf(patient.getId().getIdValue()).equals(id)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" return patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" return null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":33,"chengzihao123":9}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"public class Person implements Appointmentable {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" private final Id id;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" private final History history;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" public Person(Name name, Phone phone, Email email, Address address, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" this.id \u003d new Id(this.getClass());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":" this.history \u003d new History();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" return remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Nigeltzy"},"content":" public Id getId() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Nigeltzy"},"content":" return id;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tyxiangs"},"content":" * Returns true if both persons of the same name have at least one other identity field that is the same.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 (otherPerson.getPhone().equals(getPhone()) || otherPerson.getEmail().equals(getEmail()));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Nigeltzy"},"content":" * Adds a new appointment at the specified time, for the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Nigeltzy"},"content":" public boolean addAppointment(LocalDateTime dateTime, Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(patientId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(remarks);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Nigeltzy"},"content":" return history.addAppointment(dateTime, patientId, doctorId, remarks);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Nigeltzy"},"content":" * Delete an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Nigeltzy"},"content":" public boolean deleteAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(patientId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Nigeltzy"},"content":" return History.deleteAppointment(dateTime, patientId, doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Nigeltzy"},"content":" * Gets an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Nigeltzy"},"content":" public Appointment getAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Nigeltzy"},"content":" // TODO AFTER v1.3","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Nigeltzy"},"content":" return null;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Nigeltzy"},"content":" public String getAllAppointments() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Nigeltzy"},"content":" return History.getAllAppointments(this.getId());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Nigeltzy"},"content":" public boolean editAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Nigeltzy"},"content":" // TODO AFTER v1.3","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"tyxiangs"},"content":" return otherPerson.getName().equals(getName())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getEmail().equals(getEmail())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getAddress().equals(getAddress())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getTags().equals(getTags());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"tyxiangs"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"tyxiangs"},"content":" builder.append(getName())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"tyxiangs"},"content":" .append(\" Phone: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"tyxiangs"},"content":" .append(getPhone())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"tyxiangs"},"content":" .append(\" Email: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"tyxiangs"},"content":" .append(getEmail())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"tyxiangs"},"content":" .append(\" Address: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"tyxiangs"},"content":" .append(getAddress())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"tyxiangs"},"content":" .append(\" Remark: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"tyxiangs"},"content":" .append(getRemark())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"tyxiangs"},"content":" .append(\" Tags: \");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"tyxiangs"},"content":" getTags().forEach(builder::append);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"tyxiangs"},"content":" return builder.toString();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":69,"tyxiangs":28,"-":99}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":" * Guarantees: immutable; is always valid as declared in {@link #Remark(String)}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"public class Remark {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" /** The remark string of the person. */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":" public final String value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":" * @param remark A valid remark string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" value \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" * Returns the remark string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" * @return the string value of the remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":" public String toString() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" return value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" * Compares this remark to the specified object. The result is true if and only if the argument","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" * is not null and is a {@code Remark} object that contains the same string value as this remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" * @param other The object to compare this {@code Remark} against.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" * @return true if the given object represents a {@code Remark} equivalent to this remark, false otherwise.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" * Returns the hash code for this remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" * @return The hash code value for this remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":57}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" private static Person person1 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"friends\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" private static Person person2 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Bernice Yu\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"99272758\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"colleagues\", \"friends\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" private static Person person3 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"93210283\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"neighbours\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" private static Person person4 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" new Name(\"David Li\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"91031282\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"family\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tyxiangs"},"content":" private static Person person5 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Irfan Ibrahim\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"92492021\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"classmates\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tyxiangs"},"content":" private static Person person6 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Roy Balakrishnan\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"92624417\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tyxiangs"},"content":" new Email(\"royb@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"colleagues\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":" Person[] persons \u003d new Person[] {person1, person2, person3, person4, person5, person6};","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" return persons;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"tyxiangs":61,"-":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"tyxiangs"},"content":" final Remark modelRemark \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"tyxiangs"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark, modelTags);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"tyxiangs":3,"-":108}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" @FXML","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" private Label remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"tyxiangs":4,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"tyxiangs":1,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"chengzihao123"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonById(Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"chengzihao123"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"chengzihao123"},"content":" public Patient getFilteredPatientById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"chengzihao123"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"chengzihao123"},"content":" public Doctor getFilteredDoctorById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"chengzihao123"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"chengzihao123":18,"-":204}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" // different phone and email -\u003e returns false","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" // same name, same phone, different attributes -\u003e returns true","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" // same name, same email, different attributes -\u003e returns true","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" // same name, same phone, same email, different attributes -\u003e returns true","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"tyxiangs":16,"-":79}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" public static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":" private Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tyxiangs"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"tyxiangs"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"tyxiangs"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"tyxiangs"},"content":" return this;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"tyxiangs"},"content":" return new Person(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"tyxiangs":14,"-":95}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"* MedDict is **a project based on a sample project for Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":"* The original project MedDict was based on simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":"* MedDict is a desktop application designed for physiotherapists who manage a large number of patients. It simplifies data entry and retrieval, allowing quick access to contact details, patient conditions, and the progress of recurring or long-term patients. The application supports a streamlined process for tracking medical history, patient appointments, and treatment progress.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"* MedDict provides a specialized, all-in-one solution for physiotherapists to manage patient-related information, including medical history, treatment plans, and appointment tracking. The app is optimized for frequent use in clinical settings where speed and accuracy are essential.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"* While MedDict offers a graphical interface, most user interactions happen using a Command Line Interface (CLI), tailored for physiotherapists who prefer typing over mouse interactions and prioritize efficiency in managing patient information.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":"* In other words, MedDict is formulated for physiotherapists who need quick and reliable access to patient information, prefer minimal time spent on data entry, and are comfortable using CLI-based apps for faster updates during consultations.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"* For the detailed documentation of this project, see the **[MedDict Product Website](https://ay2425s1-cs2103t-t08-3.github.io/tp/)**.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":"* * This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":15,"-":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"### Sandy Kristian Waluyo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"\u003cimg src\u003d\"images/sandyk0105.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"[[github](https://github.com/sandyk0105)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"[[portfolio](team/sandyk0105.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":"* Role: Developer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":"### Nigel Teo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":"\u003cimg src\u003d\"images/nigeltzy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":"[[github](http://github.com/nigeltzy)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":"[[portfolio](team/nigeltzy.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":"* Role: Developer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":"### Tham Yao Xiang","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":"\u003cimg src\u003d\"images/tyxiangs.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":"[[github](http://github.com/tyxiangs)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":"### Cheng Zihao","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":"\u003cimg src\u003d\"images/chengzihao123.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":"[[github](http://github.com/chengzihao123)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":"* Responsibilities: UI and testing","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Nigeltzy"},"content":"### Axel","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"shinichi04"},"content":"\u003cimg src\u003d\"images/shinichi04.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"shinichi04"},"content":"[[github](http://github.com/shinichi04)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"shinichi04"},"content":"[[portfolio](team/shinichi04.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"sandyk0105"},"content":"* Responsibilities: Data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":13,"tyxiangs":3,"chengzihao123":5,"-":36,"shinichi04":3,"sandyk0105":1}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"chengzihao123"},"content":"* Physiotherapists who:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"chengzihao123"},"content":" * Has a significant number of patients to manage","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"chengzihao123"},"content":" * Prefers a solution that minimizes data entry and retrieval time","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"chengzihao123"},"content":" * Needs quick access to contact details and conditions of patients","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"chengzihao123"},"content":" * Needs to monitor and track the progress of recurring / returning patients over a long period of time","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"chengzihao123"},"content":" * Prefers typing to mouse interactions and reasonably comfortable using CLI apps","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"chengzihao123"},"content":"**Value proposition**: Provide a more specialised one-stop-for-all medical related information to their patients, schedules, appointments and to keep track of their medical information, progression, medical history etc. The simple CLI app is optimised for physiotherapists’ routine use during consultations, designed for physiotherapists who prioritise speed when accessing and updating patients’ information and details on a regular basis.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"chengzihao123"},"content":"|----------|---------|-----------------------------------------------------------------------|---------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | create a new patient profile | I can record their details and track their progress |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | delete a patient profile | get rid of patient\u0027s information that I no longer need / no longer a patient of mine |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | add recurring appointments for a patient | manage their treatment schedule efficiently |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | update patient details | keep their medical information current |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | add notes to a patient’s record after each session | track their progress over time |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | see which patients have upcoming appointments today | I can prepare in advance |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"chengzihao123"},"content":"| `* * *` | Doctor | view the history of treatments for a patient | monitor their improvement |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | filter patients by condition or treatment type | search patients of a particular condition or treatment for more follow-up actions |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | track my own schedule for the week | I can plan my workload |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | automatically schedule follow-up appointments for recurring patients | I don’t have to manually book each appointment |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | set reminders for follow-up appointments | I don’t miss any important sessions | |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | assign different exercises or treatments to a patient | their care plan is personalized |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | mark a patient’s session as completed | I can know which patients have been seen |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | add vital signs data (e.g., blood pressure, heart rate) for a patient | I can monitor their health metrics |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | track patient feedback after each session | I can adjust their treatment plan if needed |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | set goals for a patient’s treatment plan | I can measure their progress against these goals |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | record billing information for each session | I can manage payments and invoicing |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | access a summary of all my patients | I can get an overview of their conditions and treatments |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"chengzihao123"},"content":"| `* * ` | Doctor | view all the sessions a patient has missed | I can follow up with them and arrange for make-up session |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"chengzihao123"},"content":"| `* ` | Doctor | collaborate with other doctors by sharing patient information | we can coordinate care |","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"chengzihao123"},"content":" ","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"chengzihao123"},"content":"### Use cases","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"chengzihao123"},"content":"(For all use cases below, the **System** is the `MedDict` and the **Actor** is the `physiotherapist`, unless specified otherwise)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"chengzihao123"},"content":"**Use case - UC01: Delete a person**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"chengzihao123"},"content":"**MSS**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"chengzihao123"},"content":"1. The user searches for the patient in the list by name","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"chengzihao123"},"content":"2. MedDict displays all matching patients","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"chengzihao123"},"content":"3. The user selects the specific patient profile to delete","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"chengzihao123"},"content":"4. The user requests to delete a specific patient in the list","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"chengzihao123"},"content":"5. MedDict deletes the patient profile from the system and notifies the user that the profile has been successfully deleted","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"chengzihao123"},"content":" Use case ends.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"chengzihao123"},"content":"**Extensions**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"chengzihao123"},"content":"* 2a: The list of patients is empty.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"chengzihao123"},"content":" * 2a1. MedDict informs the doctor that no patients are available for deletion","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"chengzihao123"},"content":"* 3a. The given index or patient selection is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"chengzihao123"},"content":" * 3a1. MedDict shows an error message indicating that the selected patient profile is invalid or does not exist","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"chengzihao123"},"content":" Use case resumes from step 2","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"chengzihao123"},"content":" ","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"chengzihao123"},"content":"**Use case - UC02: Add Appointment**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"chengzihao123"},"content":"1. User requests to make a new appointment","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"chengzihao123"},"content":"2. MedDict displays the list of available time slots for appointments","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"chengzihao123"},"content":"3. User selects a specific time slot","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"chengzihao123"},"content":"4. User searches for the patient by name or the ID","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"chengzihao123"},"content":"5. User requests to assign the time slot to a patient","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"chengzihao123"},"content":"6. MedDict assigns the selected time slot to the chosen patient and confirms the appointment","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"chengzihao123"},"content":"* 2a: No available time slots.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"chengzihao123"},"content":" * 2a1. MedDict notifies the doctor that no time slots are available","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"chengzihao123"},"content":" * 2a2. The doctor chooses to wait for a cancellation or manually opens additional time slots","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"chengzihao123"},"content":"* 4a. The selected patient is not found in the system.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"chengzihao123"},"content":" * 4a1. MedDict informs the doctor that the patient is not found","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"chengzihao123"},"content":" * 4a2. The doctor is given the option to create a new patient profile or re-enter the patient\u0027s name","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"chengzihao123"},"content":" Use case resumes from step 4","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"chengzihao123"},"content":"**Use case - UC03: Mark patient’s appointment as completed**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"chengzihao123"},"content":"**MSS**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"chengzihao123"},"content":"1. User requests to view all his appointments for the day","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"chengzihao123"},"content":"2. MedDict displays all appointments that the user has for the day","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"chengzihao123"},"content":"3. User selects the patient that he has just viewed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"chengzihao123"},"content":"4. User requests to mark the patient’s appointment status as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"chengzihao123"},"content":"5. System marks the patient’s appointment for the day as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"chengzihao123"},"content":"**Extensions**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"chengzihao123"},"content":"* 2a: The user has no patients for that day.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"chengzihao123"},"content":" * 2a1. MedDict displays an empty appointment list for the day","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"chengzihao123"},"content":"* 3a. The patient selected is invalid / doesn\u0027t exist.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"chengzihao123"},"content":" * 3a1. MedDict alerts the user that the selected patient profile is invalid or does not exist","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"chengzihao123"},"content":" Use case resumes from step 2","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"chengzihao123"},"content":" ","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"chengzihao123"},"content":"* 4a. The patient’s status has already been marked as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"chengzihao123"},"content":" * 4a1. MedDict alerts to the user that the appointment has already been marked as completed","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"chengzihao123"},"content":" * Use case ends","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"chengzihao123"},"content":"1. Should work on any mainstream OS as long as it has Java 17 or above installed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"chengzihao123"},"content":"2. Should run efficiently on low-powered machines, such as older clinic computers, without consuming excessive CPU or memory resources (less than 100 MB of RAM usage)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"chengzihao123"},"content":"3. The system should allow physiotherapists to find a contact by name or ID within 1-2 seconds to ensure minimal disruption during patient interactions.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"chengzihao123"},"content":"4. Command structures should be simple enough for physiotherapists to memorize frequently used operations","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"chengzihao123"},"content":"5. The searching functionality should not be case-sensitive.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"chengzihao123"},"content":"6. The system must be able to handle unexpected errors (e.g., incorrect input, unavailable commands) gracefully by providing clear, actionable error messages","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"chengzihao123"},"content":"7. The system should automatically back up patient contact data at least once per day to ensure data integrity. Backups should be encrypted and stored in a secure location","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"chengzihao123"},"content":"8. All sensitive contact information, including patient names, phone numbers, and addresses, must be encrypted when stored on disk.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"chengzihao123"},"content":"9. Only authorized users (e.g., licensed physiotherapists) should be able to access or modify patient details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"chengzihao123"},"content":"10. Authorized users will only have access to the patients under their patient-doctor bond (PDB).","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"chengzihao123"},"content":"11. should also be scalable to accommodate larger clinics that may need to store 10,000+ patient records","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"tyxiangs"},"content":"* **Patient-Doctor Bond (PDB)**: A relationship between a doctor and a patient where the doctor is assigned to the patient for physiotherapy treatment","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"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","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"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","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"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","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"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","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"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","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":1,"tyxiangs":1,"chengzihao123":106,"-":355}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"MedDict is a **desktop application designed for physiotherapists** who manage a large number of patients. It simplifies data entry and retrieval, allowing quick access to contact details, patient conditions, and the progress of recurring or long-term patients. The application supports a streamlined process for tracking medical history, patient appointments, and treatment progress.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"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","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":1,"-":198}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"title: \"MedDict\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"repository: \"AY2425S1-CS2103T-T08-3/tp\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"chengzihao123":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"chengzihao123"},"content":" content: \"MedDict\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"chengzihao123":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"title: MedDict","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":"**MedDict**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":"MedDict is a desktop application designed for physiotherapists who manage a large number of patients. It simplifies data entry and retrieval, allowing quick access to contact details, patient conditions, and the progress of recurring or long-term patients. The application supports a streamlined process for tracking medical history, patient appointments, and treatment progress.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":"MedDict provides a specialized, all-in-one solution for physiotherapists to manage patient-related information, including medical history, treatment plans, and appointment tracking. The app is optimized for frequent use in clinical settings where speed and accuracy are essential.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"While MedDict offers a graphical interface, most user interactions happen using a Command Line Interface (CLI), tailored for physiotherapists who prefer typing over mouse interactions and prioritize efficiency in managing patient information.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"In other words, MedDict is formulated for physiotherapists who need quick and reliable access to patient information, prefer minimal time spent on data entry, and are comfortable using CLI-based apps for faster updates during consultations.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":"* If you\u0027re interested in using MedDict, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":"* If you are interested in developing MedDict, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"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","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":10,"chengzihao123":1,"-":16}},{"path":"src/main/java/seedu/address/commons/core/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":" * Container for user visible messages.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"public class Messages {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":13}},{"path":"src/main/java/seedu/address/commons/exceptions/AppNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sandyk0105"},"content":"package seedu.address.commons.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"sandyk0105"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"sandyk0105"},"content":" * Represents an error during getting appointment details","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"sandyk0105"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"sandyk0105"},"content":"public class AppNotFoundException extends Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"sandyk0105"},"content":" public AppNotFoundException(String message) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"sandyk0105"},"content":" super(message);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"sandyk0105"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sandyk0105"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"sandyk0105":10}},{"path":"src/main/java/seedu/address/commons/exceptions/InvalidIdException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.commons.exceptions;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":" * Signals that the input id can\u0027t be found","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"public class InvalidIdException extends IllegalValueException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":" * @param message should contain relevant information on the invalid id","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":" public InvalidIdException(String message) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":" super(message);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":14}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_INVALID_ID \u003d \"Invalid Id entered! Check the id that you have entered!\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"chengzihao123":1,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddAppointmentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":" * Adds an appointment to both a patient and a doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":"public class AddAppointmentCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" public static final String COMMAND_WORD \u003d \"addAppointment\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds an appointment with \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" + \"the relevant doctor and patient. \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"[APPOINTMENT_TIME] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[PATIENT_ID] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[DOCTOR_ID] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_REMARK + \"[ADDITIONAL REMARK]\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"2024-12-31 15:23\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"1234 \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"5678\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_REMARK + \"third physiotherapy session\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_ADD_APPOINTMENT_SUCCESS \u003d \"Successfully added appointment to a patient\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" private final Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" private final Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" private final LocalDateTime appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" private final String remarks;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" * Creates an AddAppointmentCommand to add the specified patient and doctor ids","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" public AddAppointmentCommand(LocalDateTime appointmentTime, Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" this.patientId \u003d patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" this.doctorId \u003d doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" this.remarks \u003d remarks;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" ObservableList\u003cPerson\u003e allPersons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" Patient patientToAddAppointment \u003d model.getFilteredPatientById(allPersons, patientId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" Doctor doctorToAddAppointment \u003d model.getFilteredDoctorById(allPersons, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" patientToAddAppointment.addAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId(), remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.addAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId(), remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"chengzihao123"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"chengzihao123"},"content":" return new CommandResult(MESSAGE_ADD_APPOINTMENT_SUCCESS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":68}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"tyxiangs":1,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/DeleteAppointmentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" * deletes an appointment to both a patient and a doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":"public class DeleteAppointmentCommand extends Command {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":" public static final String COMMAND_WORD \u003d \"deleteAppointment\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": deletes an appointment \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" + \"between the relevant doctor and patient. \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"[APPOINTMENT_TIME] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[PATIENT_ID] \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"[DOCTOR_ID]\\n\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_DATE + \"2024-12-31 15:23\"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"1234 \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" + PREFIX_ID + \"5678\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_DELETE_APPOINTMENT_SUCCESS \u003d \"Successfully \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" + \"deleted appointment to a patient\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" private final Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" private final Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" private final LocalDateTime appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" * Creates an DeleteAppointmentCommand to add the specified patient and doctor ids","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" public DeleteAppointmentCommand(LocalDateTime appointmentTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" this.patientId \u003d patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" this.doctorId \u003d doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" this.appointmentTime \u003d appointmentTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" ObservableList\u003cPerson\u003e allPersons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" Patient patientToAddAppointment \u003d model.getFilteredPatientById(allPersons, patientId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" Doctor doctorToAddAppointment \u003d model.getFilteredDoctorById(allPersons, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" patientToAddAppointment.deleteAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.deleteAppointment(appointmentTime, patientToAddAppointment.getId(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" doctorToAddAppointment.getId());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" return new CommandResult(MESSAGE_DELETE_APPOINTMENT_SUCCESS);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"tyxiangs"},"content":" Remark updatedRemark \u003d personToEdit.getRemark();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"tyxiangs"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRemark, updatedTags);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"tyxiangs":4,"-":240}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"import java.util.List;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.core.Messages;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the remark of the person identified \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" + PREFIX_REMARK + \"[REMARK]\\n\"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" + PREFIX_REMARK + \"Likes to swim.\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" private final Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" this.index \u003d index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tyxiangs"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tyxiangs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tyxiangs"},"content":" * Generates a command execution success message based on whether the remark is added to or removed from","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tyxiangs"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tyxiangs"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tyxiangs"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tyxiangs"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":" // short circuit if same object","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tyxiangs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":" return true;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tyxiangs"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tyxiangs"},"content":" return false;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"tyxiangs"},"content":" // state check","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"tyxiangs"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"tyxiangs"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":91}},{"path":"src/main/java/seedu/address/logic/parser/AddAppointmentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.commons.exceptions.InvalidIdException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.AddAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" * Parses input arguments and creates a new AddAppointmentCommand object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":"public class AddAppointmentCommandParser implements Parser\u003cAddAppointmentCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":" * Parses the given {@code String} of arguments in the context of the AddAppointmentCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" * and returns a AddAppointmentCommand object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" * @param args the input arguments string.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" * @return a AddAppointmentCommand object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":" * @throws ParseException if the user input does not conform to the expected format.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" public AddAppointmentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_DATE, PREFIX_ID, PREFIX_REMARK);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" if (!arePrefixesPresent(argumentMultimap, PREFIX_DATE, PREFIX_ID)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" || !argumentMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" AddAppointmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" patientId \u003d ParserUtil.parsePatientId(argumentMultimap.getAllValues(PREFIX_ID).get(0));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" doctorId \u003d ParserUtil.parseDoctorId(argumentMultimap.getAllValues(PREFIX_ID).get(1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" } catch (InvalidIdException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(MESSAGE_INVALID_ID, e);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" String remarks \u003d argumentMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" String appointmentTime \u003d String.valueOf(requireNonNull(argumentMultimap.getValue(PREFIX_DATE)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime time \u003d ParserUtil.parseDate(appointmentTime);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" return new AddAppointmentCommand(time, patientId, doctorId, remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":64}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" Remark remark \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" Person person \u003d new Person(name, phone, email, address, remark, tagList);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"tyxiangs":3,"-":60}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.AddAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.DeleteAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"chengzihao123"},"content":" case AddAppointmentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"chengzihao123"},"content":" return new AddAppointmentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"chengzihao123"},"content":" case DeleteAppointmentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"chengzihao123"},"content":" return new DeleteAppointmentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":5,"chengzihao123":8,"-":85}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" return values.isEmpty() ? Optional.empty()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"-":77}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" * {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" * arguments","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" * Finds the positions of all occurrences of {@code prefix} in the arguments string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" * @param prefix Prefix to find in the arguments string","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":" * E.g. if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tyxiangs"},"content":" * @param argsString Arguments string in which to search for the prefix","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":" * @param prefix The prefix to find in the arguments string","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" * @param fromIndex The index from which to start searching","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tyxiangs"},"content":" * @return The index of the first valid occurrence of the prefix, or -1 if not found","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"tyxiangs"},"content":" * @param argsString The arguments string containing the value","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"tyxiangs"},"content":" * @param currentPrefixPosition The current prefix position","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"tyxiangs"},"content":" * @param nextPrefixPosition The position of the next prefix","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"tyxiangs"},"content":" * @return The trimmed value of the argument","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"tyxiangs":25,"-":139}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":" public static final Prefix PREFIX_DATE \u003d new Prefix(\"x/\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" public static final Prefix PREFIX_ID \u003d new Prefix(\"z/\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"chengzihao123":4,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteAppointmentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chengzihao123"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"chengzihao123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ID;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.commons.exceptions.InvalidIdException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.commands.DeleteAppointmentCommand;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"/**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"chengzihao123"},"content":" * Parses input arguments and creates a new DeleteAppointmentCommand object","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"chengzihao123"},"content":"public class DeleteAppointmentCommandParser implements Parser\u003cDeleteAppointmentCommand\u003e {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"chengzihao123"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteAppointmentCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"chengzihao123"},"content":" * and returns a DeleteAppointmentCommand object for execution.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" * @param args the input arguments string.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":" * @return a DeleteAppointmentCommand object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" * @throws ParseException if the user input does not conform to the expected format.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" public DeleteAppointmentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_DATE, PREFIX_ID);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" if (!arePrefixesPresent(argumentMultimap, PREFIX_DATE, PREFIX_ID)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" || !argumentMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" DeleteAppointmentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" Id patientId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" Id doctorId;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"chengzihao123"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"chengzihao123"},"content":" patientId \u003d ParserUtil.parsePatientId(argumentMultimap.getAllValues(PREFIX_ID).get(0));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"chengzihao123"},"content":" doctorId \u003d ParserUtil.parseDoctorId(argumentMultimap.getAllValues(PREFIX_ID).get(1));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"chengzihao123"},"content":" } catch (InvalidIdException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(MESSAGE_INVALID_ID, e);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" String appointmentTime \u003d String.valueOf(requireNonNull(argumentMultimap.getValue(PREFIX_DATE)));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime time \u003d ParserUtil.parseDate(appointmentTime);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" return new DeleteAppointmentCommand(time, patientId, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"chengzihao123":61}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"tyxiangs":2,"-":29}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"chengzihao123"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"chengzihao123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.commons.exceptions.InvalidIdException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_INVALID_PATIENT_ID \u003d \"The patient id you have keyed in is invalid\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":" public static final String MESSAGE_INVALID_DOCTOR_ID \u003d \"The doctor id you have keyed in is invalid\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"chengzihao123"},"content":" * Parses {@code id} into an {@code Id} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" * trimmed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"chengzihao123"},"content":" * @throws InvalidIdException if the specified patient id is invalid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"chengzihao123"},"content":" public static Id parsePatientId(String id) throws InvalidIdException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"chengzihao123"},"content":" Patient patientWithId \u003d Patient.getPatientWithId(trimmedId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"chengzihao123"},"content":" if (patientWithId \u003d\u003d null) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"chengzihao123"},"content":" throw new InvalidIdException(MESSAGE_INVALID_PATIENT_ID);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"chengzihao123"},"content":" return patientWithId.getId();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"chengzihao123"},"content":" * Parses {@code id} into an {@code Id} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"chengzihao123"},"content":" * trimmed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"chengzihao123"},"content":" * @throws InvalidIdException if the specified doctor id is invalid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"chengzihao123"},"content":" public static Id parseDoctorId(String id) throws InvalidIdException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"chengzihao123"},"content":" String trimmedId \u003d id.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"chengzihao123"},"content":" Doctor doctorWithId \u003d Doctor.getDoctorWithId(trimmedId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"chengzihao123"},"content":" if (doctorWithId \u003d\u003d null) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"chengzihao123"},"content":" throw new InvalidIdException(MESSAGE_INVALID_DOCTOR_ID);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"chengzihao123"},"content":" return doctorWithId.getId();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"chengzihao123"},"content":" * Parses a {@code String date} into a {@code LocalDateTime}.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"chengzihao123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"chengzihao123"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"chengzihao123"},"content":" * @throws ParseException if the given {@code date} is invalid or not in the expected format.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"chengzihao123"},"content":" public static LocalDateTime parseDate(String date) throws ParseException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"chengzihao123"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"chengzihao123"},"content":" String trimmedDate \u003d date.trim();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime time;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"chengzihao123"},"content":" LocalDateTime currentDateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"chengzihao123"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"chengzihao123"},"content":" try {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"chengzihao123"},"content":" time \u003d LocalDateTime.parse(trimmedDate, formatter);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"chengzihao123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(\"Invalid date-time format, please use yyyy-MM-dd HH:mm.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"chengzihao123"},"content":" if (currentDateTime.isAfter(time)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"chengzihao123"},"content":" throw new ParseException(\"Invalid time entered. The date and time can\u0027t be in the past!\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"chengzihao123"},"content":" return time;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"chengzihao123":61,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" * Parses input arguments and creates a new RemarkCommand object.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":" * Parses the given {@code String} of arguments in the context of the RemarkCommand","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" * and returns a RemarkCommand object for execution.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" * @param args the input arguments string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" * @return a RemarkCommand object.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" * @throws ParseException if the user input does not conform to the expected format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" requireNonNull(args);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" Index index;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" try {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" return new RemarkCommand(index, new Remark(remark));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":43}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"chengzihao123"},"content":" /** Returns an unmodifiable view of the filtered person list by Id search*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"chengzihao123"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonById(Id id);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"chengzihao123"},"content":" /** Returns the patient via id search*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"chengzihao123"},"content":" Patient getFilteredPatientById(ObservableList\u003cPerson\u003e allPersons, Id id);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"chengzihao123"},"content":" /** Returns the doctor via id search*/","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"chengzihao123"},"content":" Doctor getFilteredDoctorById(ObservableList\u003cPerson\u003e allPersons, Id id);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"chengzihao123":12,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"chengzihao123"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonById(Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"chengzihao123"},"content":" return filteredPersons.filtered(person -\u003e person.getId().getIdValue() \u003d\u003d id.getIdValue());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"chengzihao123"},"content":" public Patient getFilteredPatientById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"chengzihao123"},"content":" Patient patient \u003d null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"chengzihao123"},"content":" for (Person person : allPersons) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"chengzihao123"},"content":" if (Patient.class.isAssignableFrom(person.getId().getRole())) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"chengzihao123"},"content":" patient \u003d (Patient) person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"chengzihao123"},"content":" break;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"chengzihao123"},"content":" return patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"chengzihao123"},"content":" public Doctor getFilteredDoctorById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"chengzihao123"},"content":" Doctor doctor \u003d null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"chengzihao123"},"content":" for (Person person : allPersons) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"chengzihao123"},"content":" if (Doctor.class.isAssignableFrom(person.getId().getRole())) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"chengzihao123"},"content":" doctor \u003d (Doctor) person;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"chengzihao123"},"content":" break;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"chengzihao123"},"content":" return doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"chengzihao123":32,"-":148}},{"path":"src/main/java/seedu/address/model/person/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * A class meant to group all relevant details of an appointment together.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"public class Appointment {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" private Id patientId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" private Id doctorId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" private String remarks;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":" * Creates an appointment instance associated with the specified patient, doctor, and remarks.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param remarks Remarks given by the doctor for the appointment or patient.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" public Appointment(Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" this.patientId \u003d patientId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" this.doctorId \u003d doctorId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" this.remarks \u003d remarks;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" public Id getPatientId() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" return patientId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" public Id getDoctorId() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" return doctorId;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" public String getRemarks() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":" return remarks;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" return true;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":" Appointment appointment \u003d (Appointment) o;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Nigeltzy"},"content":" return Objects.equals(patientId, appointment.patientId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Nigeltzy"},"content":" \u0026\u0026 Objects.equals(doctorId, appointment.doctorId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Nigeltzy"},"content":" \u0026\u0026 Objects.equals(remarks, appointment.remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Nigeltzy"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Nigeltzy"},"content":" return Objects.hash(patientId, doctorId, remarks);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Nigeltzy"},"content":" public String toString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Nigeltzy"},"content":" return \"Appointment: \" + getPatientId() + \" (patient id) with \" + getDoctorId() + \" (doctor id). \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Nigeltzy"},"content":" + \"Remarks: \" + getRemarks();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":66}},{"path":"src/main/java/seedu/address/model/person/Appointmentable.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * Implemented by classes who have appointment-related functionality.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"public interface Appointmentable {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" * Adds a new appointment at the specified time, for the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" public abstract boolean addAppointment(LocalDateTime dateTime, Id patientId, Id doctorId, String remarks);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" * Edit an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" public abstract boolean editAppointment(LocalDateTime dateTime, Id patientId, Id doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" * Delete an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" public abstract boolean deleteAppointment(LocalDateTime dateTime, Id patientId, Id doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" * Gets an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Nigeltzy"},"content":" public abstract Appointment getAppointment(LocalDateTime dateTime, Id patientId, Id doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Nigeltzy"},"content":" * Returns all appointments for the specified person.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Nigeltzy"},"content":" * @return String representing all the appointments of the person, may not be a String.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Nigeltzy"},"content":" public abstract String getAllAppointments();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":56}},{"path":"src/main/java/seedu/address/model/person/Doctor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" * Encapsulates the code required to represent a target user (doctor) of the application.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"public class Doctor extends Person {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" private static ArrayList\u003cDoctor\u003e doctors \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" * @param name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param phone","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" * @param email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" * @param address","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" * @param remark","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" * @param tags","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" public Doctor(Name name, Phone phone, Email email, Address address, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" super(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" Doctor.doctors.add(this);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" public static ArrayList\u003cDoctor\u003e getDoctors() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" return Doctor.doctors;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" public static Doctor getDoctorWithId(String id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"chengzihao123"},"content":" ArrayList\u003cDoctor\u003e allDoctors \u003d getDoctors();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"chengzihao123"},"content":" for (Doctor doctor : allDoctors) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"chengzihao123"},"content":" if (String.valueOf(doctor.getId().getIdValue()).equals(id)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"chengzihao123"},"content":" return doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" return null;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":14,"tyxiangs":18,"chengzihao123":10}},{"path":"src/main/java/seedu/address/model/person/History.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"chengzihao123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":"import java.util.Map;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"chengzihao123"},"content":"import java.util.TreeMap;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"sandyk0105"},"content":"import seedu.address.commons.exceptions.AppNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":" * Represents a medical history entry associated with a doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" * This class stores details of the appointments or medical interactions","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" * for a patient, including the doctor, date, and remarks.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":"public class History {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" * Static database for all appointments sorted by LocalDateTime.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" * It contains appointments shared across all patients.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" private static TreeMap\u003cLocalDateTime, Appointment\u003e appointmentDatabase;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" * List of appointment dates (LocalDateTime) for this instance of a person.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" private final ArrayList\u003cLocalDateTime\u003e appointments;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" * Default constructor for History class.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" * Initializes the appointment database and the patient\u0027s list of appointments.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" public History() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" // Initialize the static appointmentDatabase if it has not been initialized yet","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" if (appointmentDatabase \u003d\u003d null) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" appointmentDatabase \u003d new TreeMap\u003c\u003e();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"chengzihao123"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" * Constructs a History object for a specific patient to track their appointments.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" * Sets a default remark of \"no remark\" for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" * @param date The date and time of the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"chengzihao123"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" public History(LocalDateTime date, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" this();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" addAppointment(date, patientId, doctorId, \"no remark\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" * Constructs a History object for a specific patient to track their appointments.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" * Allows for a remark to be set for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tyxiangs"},"content":" * @param date The date and time of the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" * @param remark Remarks provided by the doctor for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":" public History(LocalDateTime date, Id patientId, Id doctorId, String remark) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":" this();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tyxiangs"},"content":" addAppointment(date, patientId, doctorId, remark);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tyxiangs"},"content":" * Adds a new appointment to the shared appointment database and the patient\u0027s history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" * @param date The date and time of the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" * @param remark The remark for the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":" * @return true if the appointment was successfully added, false if a duplicate was found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":" public boolean addAppointment(LocalDateTime date, Id patientId, Id doctorId, String remark) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"tyxiangs"},"content":" if (appointmentDatabase.containsKey(date)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":" Appointment existingAppointment \u003d appointmentDatabase.get(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" if (existingAppointment.getPatientId().equals(patientId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 existingAppointment.getDoctorId().equals(doctorId)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tyxiangs"},"content":" return false; // Duplicate found","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d new Appointment(patientId, doctorId, remark);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"tyxiangs"},"content":" appointmentDatabase.put(date, appointment);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"tyxiangs"},"content":" appointments.add(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"tyxiangs"},"content":" return true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"tyxiangs"},"content":" * Deletes an appointment from the shared appointment database and the patient\u0027s history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"tyxiangs"},"content":" * @param date The date and time of the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tyxiangs"},"content":" * @return true if the appointment was successfully deleted, false if no matching appointment was found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"tyxiangs"},"content":" public static boolean deleteAppointment(LocalDateTime date, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d appointmentDatabase.get(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"tyxiangs"},"content":" Patient patient \u003d Patient.getPatientWithId(patientId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"tyxiangs"},"content":" History history \u003d patient.getHistory();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"tyxiangs"},"content":" if (appointment \u003d\u003d null || history.checkDuplicateAppointments(date)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"tyxiangs"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"tyxiangs"},"content":" appointmentDatabase.remove(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"tyxiangs"},"content":" history.removeAppointments(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"tyxiangs"},"content":" return true;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"tyxiangs"},"content":" * Removes an appointment from the patient\u0027s history.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"tyxiangs"},"content":" * @param date The date and time of the appointment to remove.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"tyxiangs"},"content":" public void removeAppointments(LocalDateTime date) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"tyxiangs"},"content":" if (appointments.contains(date)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"tyxiangs"},"content":" appointments.remove(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"tyxiangs"},"content":" * Checks if the patient has duplicate appointments for the same date.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"tyxiangs"},"content":" * @param date The date to check for duplicates.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"tyxiangs"},"content":" * @return true if duplicate appointments are found, false otherwise.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"tyxiangs"},"content":" public boolean checkDuplicateAppointments(LocalDateTime date) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"tyxiangs"},"content":" if (Collections.frequency(appointments, date) \u003e 1) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"tyxiangs"},"content":" return true; // Duplicate found","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"tyxiangs"},"content":" return false;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"tyxiangs"},"content":" * Retrieves the details of a single appointment based on the date, patient, and doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"tyxiangs"},"content":" * @param date The date and time of the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tyxiangs"},"content":" * @return The appointment details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tyxiangs"},"content":" * @throws AppNotFoundException if no appointment is found for the given patient and doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"tyxiangs"},"content":" public Appointment getOneAppointmentDetail(LocalDateTime date, Id patientId, Id doctorId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"tyxiangs"},"content":" throws AppNotFoundException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"tyxiangs"},"content":" if (!appointments.contains(date)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"tyxiangs"},"content":" throw new AppNotFoundException(\"No appointment found in this patient\u0027s history for the given date.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d appointmentDatabase.get(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"tyxiangs"},"content":" if (appointment \u003d\u003d null || !appointment.getPatientId().equals(patientId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"tyxiangs"},"content":" || !appointment.getDoctorId().equals(doctorId)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"tyxiangs"},"content":" throw new AppNotFoundException(\"No such appointment found for the given patient and doctor.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"tyxiangs"},"content":" return appointment;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"tyxiangs"},"content":" * Retrieves all the appointments for a specific patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"tyxiangs"},"content":" * @return A string listing all the appointments for the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"tyxiangs"},"content":" public String getAllPatientsAppointments(Id patientId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"tyxiangs"},"content":" StringBuilder result \u003d new StringBuilder(\"These are all the appointments this patient has:\\n\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"tyxiangs"},"content":" for (LocalDateTime date : appointments) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d appointmentDatabase.get(date);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"tyxiangs"},"content":" if (appointment.getPatientId().equals(patientId)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"tyxiangs"},"content":" result.append(formatAppointment(date, appointment)).append(\"\\n\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"tyxiangs"},"content":" return result.toString();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"sandyk0105"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"tyxiangs"},"content":" * Retrieves all appointments for a specific doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"tyxiangs"},"content":" * @return A string listing all appointments for the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"tyxiangs"},"content":" public static String getAllAppointments(Id doctorId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"tyxiangs"},"content":" StringBuilder sb \u003d new StringBuilder(\"All appointments for you in the database:\\n\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"tyxiangs"},"content":" for (Map.Entry\u003cLocalDateTime, Appointment\u003e entry : appointmentDatabase.entrySet()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"tyxiangs"},"content":" Id checkId \u003d entry.getValue().getDoctorId();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"tyxiangs"},"content":" if (checkId.equals(doctorId)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"tyxiangs"},"content":" LocalDateTime date \u003d entry.getKey();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d entry.getValue();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"tyxiangs"},"content":" sb.append(formatAppointment(date, appointment)).append(\"\\n\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"tyxiangs"},"content":" return sb.toString();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"tyxiangs"},"content":" * Retrieves all appointments for a specific day for a patient and doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"tyxiangs"},"content":" * @param date The date to check.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"tyxiangs"},"content":" * @return A list of appointments on the specified day.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"tyxiangs"},"content":" * @throws AppNotFoundException if no appointments are found for the specified date.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"tyxiangs"},"content":" public String getPatientAppointmentsForDay(LocalDate date, Id patientId, Id doctorId)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"tyxiangs"},"content":" throws AppNotFoundException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"tyxiangs"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"tyxiangs"},"content":" for (LocalDateTime appointmentDateTime : appointments) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d appointmentDatabase.get(appointmentDateTime);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"tyxiangs"},"content":" if (appointmentDateTime.toLocalDate().equals(date)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 appointment.getPatientId().equals(patientId)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 appointment.getDoctorId().equals(doctorId)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"tyxiangs"},"content":" sb.append(formatAppointment(appointmentDateTime, appointment));","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"tyxiangs"},"content":" if (sb.isEmpty()) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"tyxiangs"},"content":" throw new AppNotFoundException(\"No appointments found for the specified date.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"tyxiangs"},"content":" return sb.toString();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"tyxiangs"},"content":" * Retrieves all appointments for a specific patient within the past \u0027n\u0027 days.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"tyxiangs"},"content":" * @param days The number of recent days to search for appointments.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The ID of the patient whose appointments to retrieve.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"tyxiangs"},"content":" * @return A string containing all appointments formatted for the specified patient within the last \u0027n\u0027 days.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"tyxiangs"},"content":" * @throws AppNotFoundException if no appointments are found within the specified time period.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"tyxiangs"},"content":" public String getPatientAppointmentsForRecentDays(int days, Id patientId)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"tyxiangs"},"content":" throws AppNotFoundException {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"tyxiangs"},"content":" ArrayList\u003cAppointment\u003e appointmentsForRecentDays \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"tyxiangs"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"tyxiangs"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"tyxiangs"},"content":" LocalDate startDate \u003d currentDate.minusDays(days);","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"tyxiangs"},"content":" // Iterate through the patient\u0027s specific appointments and filter for recent \u0027n\u0027 days","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"tyxiangs"},"content":" for (LocalDateTime appointmentDateTime : appointments) { // appointments is the patient\u0027s list","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d appointmentDatabase.get(appointmentDateTime);","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"tyxiangs"},"content":" LocalDate appointmentDate \u003d appointmentDateTime.toLocalDate();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"tyxiangs"},"content":" if (!appointmentDate.isBefore(startDate) \u0026\u0026 !appointmentDate.isAfter(currentDate)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 appointment.getPatientId().equals(patientId)) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"tyxiangs"},"content":" sb.append(formatAppointment(appointmentDateTime, appointment));","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"tyxiangs"},"content":" // If no appointments are found, throw an exception","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"tyxiangs"},"content":" if (sb.isEmpty()) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"tyxiangs"},"content":" throw new AppNotFoundException(\"No appointments found for the recent \" + days + \" days.\");","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"tyxiangs"},"content":" // Return the formatted string of appointments","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"tyxiangs"},"content":" return sb.toString();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"tyxiangs"},"content":" * Retrieves all appointments for a specific doctor within the past \u0027n\u0027 days.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"tyxiangs"},"content":" * @param days The number of recent days to search for appointments.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"tyxiangs"},"content":" * @param doctorId The ID of the doctor whose appointments to retrieve.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"tyxiangs"},"content":" * @return A string containing all appointments formatted for the specified doctor within the last \u0027n\u0027 days.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"tyxiangs"},"content":" * @throws AppNotFoundException if no appointments are found within the specified time period.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"tyxiangs"},"content":" public String getDoctorAppointmentsForRecentDays(int days, Id doctorId)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"tyxiangs"},"content":" throws AppNotFoundException {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"tyxiangs"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"tyxiangs"},"content":" // Get the most recent date from the appointment database","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"tyxiangs"},"content":" if (appointmentDatabase.isEmpty()) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"tyxiangs"},"content":" throw new AppNotFoundException(\"No appointments found in the database.\");","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"tyxiangs"},"content":" // Find the most recent appointment date","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"tyxiangs"},"content":" LocalDateTime mostRecentDateTime \u003d appointmentDatabase.lastKey();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"tyxiangs"},"content":" LocalDate mostRecentDate \u003d mostRecentDateTime.toLocalDate();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"tyxiangs"},"content":" LocalDate startDate \u003d mostRecentDate.minusDays(days);","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"tyxiangs"},"content":" // Filter appointments within the last \u0027n\u0027 days for the given doctor","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"tyxiangs"},"content":" for (Map.Entry\u003cLocalDateTime, Appointment\u003e entry : appointmentDatabase.entrySet()) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d entry.getValue();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"tyxiangs"},"content":" LocalDate appointmentDate \u003d entry.getKey().toLocalDate();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"tyxiangs"},"content":" if (!appointmentDate.isBefore(startDate) \u0026\u0026 !appointmentDate.isAfter(mostRecentDate)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 appointment.getDoctorId().equals(doctorId)) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"tyxiangs"},"content":" sb.append(formatAppointment(entry.getKey(), appointment));","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"tyxiangs"},"content":" // If no appointments are found, throw an exception","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"tyxiangs"},"content":" if (sb.isEmpty()) {","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"tyxiangs"},"content":" throw new AppNotFoundException(\"No appointments found for the recent \" + days + \" days.\");","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"tyxiangs"},"content":" // Return the formatted string of appointments","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"tyxiangs"},"content":" return sb.toString();","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"tyxiangs"},"content":" * Formats the appointment details for display.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"tyxiangs"},"content":" * @param dateTime The date and time of the appointment.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"tyxiangs"},"content":" * @param appointment The appointment object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"tyxiangs"},"content":" * @return A formatted string representing the appointment details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"tyxiangs"},"content":" private static String formatAppointment(LocalDateTime dateTime, Appointment appointment) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"tyxiangs"},"content":" return String.format(\"Appointment on %s: Doctor ID \u003d %s, Patient ID \u003d %s\",","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"tyxiangs"},"content":" dateTime.toString(), appointment.getDoctorId().toString(), appointment.getPatientId().toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"tyxiangs"},"content":" * Returns a string representation of all appointments in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"tyxiangs"},"content":" * @return A string listing all appointments.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"tyxiangs"},"content":" public String toString() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"tyxiangs"},"content":" StringBuilder sb \u003d new StringBuilder(\"All appointments in the database:\\n\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"tyxiangs"},"content":" for (Map.Entry\u003cLocalDateTime, Appointment\u003e entry : appointmentDatabase.entrySet()) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"tyxiangs"},"content":" LocalDateTime date \u003d entry.getKey();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"tyxiangs"},"content":" Appointment appointment \u003d entry.getValue();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"tyxiangs"},"content":" sb.append(formatAppointment(date, appointment)).append(\"\\n\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"tyxiangs"},"content":" return sb.toString();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":15,"tyxiangs":293,"chengzihao123":13,"sandyk0105":4}},{"path":"src/main/java/seedu/address/model/person/Id.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * Id class that auto-increments and generates an automated unique Id number for Doctors and Patients separately.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"public class Id {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" private static int patientIdCounter \u003d 0;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" private static int doctorIdCounter \u003d 0;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" private static int personIdCounter \u003d 0; // TODO REMOVE AFTER V1.3","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" private int idValue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" private Class\u003c? extends Person\u003e role;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * Creates an Id that is associated with a specific class.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param personClass Either Doctor or Patient class.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" public Id(Class\u003c? extends Person\u003e personClass) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(personClass);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" this.role \u003d personClass;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":" // Check if the class is Patient or Doctor and assign the appropriate ID","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" if (personClass.equals(Patient.class)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" idValue \u003d ++patientIdCounter;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" } else if (personClass.equals(Doctor.class)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" idValue \u003d ++doctorIdCounter;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" } else if (personClass.equals(Person.class)) { // TODO AFTER INTEGRATION","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" idValue \u003d ++personIdCounter;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" } else {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" throw new IllegalArgumentException(\"Invalid class type. Expected Patient or Doctor.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" public int getIdValue() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":" return idValue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" public Class\u003c? extends Person\u003e getRole() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" return role;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":" return \"Id{\" + \"id\u003d\" + idValue + \", role\u003d\" + role.getSimpleName() + \u0027}\u0027;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":48}},{"path":"src/main/java/seedu/address/model/person/Pair.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":" * A simple class to group two closely related information together.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":" * @param \u003cK\u003e Supposed \"key\".","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" * @param \u003cV\u003e Supposed \"value\".","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":"public class Pair\u003cK, V\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":" private K id;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nigeltzy"},"content":" private V remarks;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" * Creates a new Pair instance to group two different elements together.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":" * @param id","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" * @param remarks","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" public Pair(K id, V remarks) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" this.id \u003d id;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nigeltzy"},"content":" this.remarks \u003d remarks;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Nigeltzy"},"content":" public K getId() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Nigeltzy"},"content":" return id;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" public V getRemarks() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" return remarks;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Nigeltzy"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Nigeltzy"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Nigeltzy"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Nigeltzy"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" Pair\u003c?, ?\u003e pair \u003d (Pair\u003c?, ?\u003e) o; // Typecast to Pair","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nigeltzy"},"content":" // Compare key and value","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Nigeltzy"},"content":" return Objects.equals(id, pair.id) \u0026\u0026 Objects.equals(remarks, pair.remarks);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":47}},{"path":"src/main/java/seedu/address/model/person/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Nigeltzy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Nigeltzy"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Nigeltzy"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nigeltzy"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nigeltzy"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nigeltzy"},"content":"public class Patient extends Person {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" * Static list to store all Patient instances.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nigeltzy"},"content":" private static ArrayList\u003cPatient\u003e patients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":" * Constructs a Patient object with the specified details.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nigeltzy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" * @param name The name of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" * @param phone The phone number of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" * @param email The email address of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" * @param address The residential address of the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" * @param remark Additional remarks about the patient.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" * @param tags Tags associated with the patient (e.g., chronic conditions).","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" public Patient(Name name, Phone phone, Email email, Address address, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Nigeltzy"},"content":" super(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" Patient.patients.add(this); // Add this patient to the static list of all patients","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" * Retrieves the list of all patients.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" * @return An ArrayList containing all registered patients.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Nigeltzy"},"content":" public static ArrayList\u003cPatient\u003e getPatients() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Nigeltzy"},"content":" return patients;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" * Retrieves a patient by their Id object.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" * @param patientId The Id object of the patient to search for.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" * @return The Patient object if found, or null if no matching patient is found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" public static Patient getPatientWithId(Id patientId) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" ArrayList\u003cPatient\u003e allPatients \u003d getPatients();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" for (Patient patient : allPatients) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" if (patient.getId().equals(patientId)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" return patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" return null; // Return null if no matching patient is found","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tyxiangs"},"content":" * Retrieves a patient by their ID as a String.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" * @param id The ID of the patient as a String.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" * @return The Patient object if found, or null if no matching patient is found.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"chengzihao123"},"content":" public static Patient getPatientWithId(String id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"chengzihao123"},"content":" ArrayList\u003cPatient\u003e allPatients \u003d getPatients();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"chengzihao123"},"content":" for (Patient patient : allPatients) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"chengzihao123"},"content":" if (String.valueOf(patient.getId().getIdValue()).equals(id)) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"chengzihao123"},"content":" return patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" return null; // Return null if no matching patient is found","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Nigeltzy"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":27,"tyxiangs":39,"chengzihao123":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Nigeltzy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nigeltzy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nigeltzy"},"content":"public class Person implements Appointmentable {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nigeltzy"},"content":" private final Id id;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" private final Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Nigeltzy"},"content":" private final History history;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" public Person(Name name, Phone phone, Email email, Address address, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nigeltzy"},"content":" this.id \u003d new Id(this.getClass());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Nigeltzy"},"content":" this.history \u003d new History();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" return remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Nigeltzy"},"content":" public Id getId() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Nigeltzy"},"content":" return id;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tyxiangs"},"content":" public History getHistory() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tyxiangs"},"content":" return history;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"tyxiangs"},"content":" * Returns true if both persons of the same name have at least one other identity field that is the same.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getName().equals(getName())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 (otherPerson.getPhone().equals(getPhone()) || otherPerson.getEmail().equals(getEmail()));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Nigeltzy"},"content":" * Adds a new appointment at the specified time, for the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Nigeltzy"},"content":" public boolean addAppointment(LocalDateTime dateTime, Id patientId, Id doctorId, String remarks) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(patientId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(remarks);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Nigeltzy"},"content":" return history.addAppointment(dateTime, patientId, doctorId, remarks);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Nigeltzy"},"content":" * Delete an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Nigeltzy"},"content":" public boolean deleteAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(patientId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Nigeltzy"},"content":" requireNonNull(doctorId);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"tyxiangs"},"content":" return History.deleteAppointment(dateTime, patientId, doctorId);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Nigeltzy"},"content":" /**","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Nigeltzy"},"content":" * Gets an appointment at the specified time, with the respective patient and doctor.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Nigeltzy"},"content":" *","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Nigeltzy"},"content":" * @param dateTime Time of appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Nigeltzy"},"content":" * @param patientId Id of patient in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Nigeltzy"},"content":" * @param doctorId Id of doctor in the appointment.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Nigeltzy"},"content":" * @return True if command was successful, false if otherwise.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Nigeltzy"},"content":" */","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Nigeltzy"},"content":" public Appointment getAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Nigeltzy"},"content":" // TODO AFTER v1.3","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Nigeltzy"},"content":" return null;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Nigeltzy"},"content":" public String getAllAppointments() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Nigeltzy"},"content":" return History.getAllAppointments(this.getId());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Nigeltzy"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Nigeltzy"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Nigeltzy"},"content":" @Override","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Nigeltzy"},"content":" public boolean editAppointment(LocalDateTime dateTime, Id patientId, Id doctorId) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Nigeltzy"},"content":" // TODO AFTER v1.3","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Nigeltzy"},"content":" return false;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"tyxiangs"},"content":" return otherPerson.getName().equals(getName())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getEmail().equals(getEmail())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getAddress().equals(getAddress())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 otherPerson.getTags().equals(getTags());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"tyxiangs"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"tyxiangs"},"content":" builder.append(getName())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"tyxiangs"},"content":" .append(\" Phone: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"tyxiangs"},"content":" .append(getPhone())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"tyxiangs"},"content":" .append(\" Email: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"tyxiangs"},"content":" .append(getEmail())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"tyxiangs"},"content":" .append(\" Address: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"tyxiangs"},"content":" .append(getAddress())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"tyxiangs"},"content":" .append(\" Remark: \")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"tyxiangs"},"content":" .append(getRemark())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"tyxiangs"},"content":" .append(\" Tags: \");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"tyxiangs"},"content":" getTags().forEach(builder::append);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"tyxiangs"},"content":" return builder.toString();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Nigeltzy":68,"tyxiangs":33,"-":99}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tyxiangs"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"tyxiangs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"tyxiangs"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"tyxiangs"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"tyxiangs"},"content":" * Guarantees: immutable; is always valid as declared in {@link #Remark(String)}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"tyxiangs"},"content":"public class Remark {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":" /** The remark string of the person. */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"tyxiangs"},"content":" public final String value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"tyxiangs"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"tyxiangs"},"content":" * @param remark A valid remark string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tyxiangs"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"tyxiangs"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":" value \u003d remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" * Returns the remark string.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" * @return the string value of the remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":" public String toString() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":" return value;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" * Compares this remark to the specified object. The result is true if and only if the argument","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" * is not null and is a {@code Remark} object that contains the same string value as this remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" * @param other The object to compare this {@code Remark} against.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" * @return true if the given object represents a {@code Remark} equivalent to this remark, false otherwise.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" * Returns the hash code for this remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" *","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" * @return The hash code value for this remark.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" @Override","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":"}","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"tyxiangs":57}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tyxiangs"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"tyxiangs"},"content":" private static Person person1 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"tyxiangs"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"friends\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"tyxiangs"},"content":" private static Person person2 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Bernice Yu\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"99272758\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"colleagues\", \"friends\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" private static Person person3 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"93210283\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"neighbours\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" private static Person person4 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"tyxiangs"},"content":" new Name(\"David Li\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"91031282\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"family\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"tyxiangs"},"content":" private static Person person5 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Irfan Ibrahim\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"92492021\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tyxiangs"},"content":" new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"classmates\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"tyxiangs"},"content":" private static Person person6 \u003d new Person(","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"tyxiangs"},"content":" new Name(\"Roy Balakrishnan\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"tyxiangs"},"content":" new Phone(\"92624417\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"tyxiangs"},"content":" new Email(\"royb@example.com\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"tyxiangs"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"tyxiangs"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"tyxiangs"},"content":" getTagSet(\"colleagues\")","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tyxiangs"},"content":" );","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"tyxiangs"},"content":" Person[] persons \u003d new Person[] {person1, person2, person3, person4, person5, person6};","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"tyxiangs"},"content":" return persons;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"tyxiangs":61,"-":40}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"tyxiangs"},"content":" final Remark modelRemark \u003d new Remark(\"\");","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"tyxiangs"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark, modelTags);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"tyxiangs":3,"-":108}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" @FXML","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" private Label remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"tyxiangs"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"tyxiangs":4,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"tyxiangs":1,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Doctor;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Id;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"chengzihao123"},"content":"import seedu.address.model.person.Patient;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"chengzihao123"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonById(Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"chengzihao123"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"chengzihao123"},"content":" public Patient getFilteredPatientById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"chengzihao123"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"chengzihao123"},"content":" @Override","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"chengzihao123"},"content":" public Doctor getFilteredDoctorById(ObservableList\u003cPerson\u003e allPersons, Id id) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"chengzihao123"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"chengzihao123"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"chengzihao123"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"chengzihao123":18,"-":204}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tyxiangs"},"content":" // different phone and email -\u003e returns false","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"tyxiangs"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tyxiangs"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"tyxiangs"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tyxiangs"},"content":" // same name, same phone, different attributes -\u003e returns true","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"tyxiangs"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"tyxiangs"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"tyxiangs"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tyxiangs"},"content":" // same name, same email, different attributes -\u003e returns true","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tyxiangs"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"tyxiangs"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"tyxiangs"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"tyxiangs"},"content":" // same name, same phone, same email, different attributes -\u003e returns true","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tyxiangs"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"tyxiangs":16,"-":79}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"tyxiangs"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tyxiangs"},"content":" public static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"tyxiangs"},"content":" private Remark remark;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"tyxiangs"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tyxiangs"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"tyxiangs"},"content":" /**","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"tyxiangs"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"tyxiangs"},"content":" */","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"tyxiangs"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"tyxiangs"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"tyxiangs"},"content":" return this;","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"tyxiangs"},"content":" }","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"tyxiangs"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"tyxiangs"},"content":" return new Person(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"tyxiangs":14,"-":95}}] diff --git a/AY2425S1-CS2103T-T08-3_tp_master/commits.json b/AY2425S1-CS2103T-T08-3_tp_master/commits.json index 550ee127..882c2cfb 100644 --- a/AY2425S1-CS2103T-T08-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-T08-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Nigeltzy":[{"date":"2024-10-03","commitResults":[{"hash":"b681f77fde006a9e9c2642f5dadfb32d07522d55","isMergeCommit":true,"messageTitle":"Merge pull request #21 from tyxiangs/branch-AddPhoto","messageBody":"Branch add photo","fileTypesAndContributionMap":{}},{"hash":"573a049bed49a2a3fdc6f4573f2336aed8e88bcf","isMergeCommit":false,"messageTitle":"Update AboutUs.md for Nigel \u003e\u003e\u003e\u003e\u003e\u003e\u003e master","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"856f28241cbbb0a4e2b99c111bf473dc2a6938e2","isMergeCommit":true,"messageTitle":"Merge pull request #32 from AY2425S1-CS2103T-T08-3/28-update-aboutus-sandy","messageBody":"Update AboutUs for Sandy","fileTypesAndContributionMap":{}},{"hash":"ccd2e5cab8bf47e9273de73170d1eab6defac118","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Nigeltzy/24-update-aboutusmd-nigel","messageBody":"Update AboutUs.md for Nigel","fileTypesAndContributionMap":{}},{"hash":"81242d0fa328df7255aa33b31886cbdf06f06fe9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 27-update-aboutus-axel","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e90dcd85335abb4524781848530e06c70d07006d","isMergeCommit":true,"messageTitle":"Merge pull request #29 from shinichi04/27-update-aboutus-axel","messageBody":"Edit AboutUs for Axel","fileTypesAndContributionMap":{}},{"hash":"00a481e6b8a67a4047372441a7a7886c09631381","isMergeCommit":true,"messageTitle":"Merge pull request #31 from tyxiangs/branch-UpdateAboutUs","messageBody":"Update AboutUs page for course admin purposes","fileTypesAndContributionMap":{}},{"hash":"4b7562ddd0ccb1ebd9a40ce8dfcb000328c6c4a2","isMergeCommit":true,"messageTitle":"Merge pull request #35 from chengzihao123/about-us","messageBody":"Modify AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"6dc4a7df566e50300161cd9ebd8cb82445a87400","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T08-3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"e420c0ebd91a08c471089f67d7b5367132b0d16b","isMergeCommit":false,"messageTitle":"Update Ui.png and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6545bea8a8310054af7bd9308f93b5af963f75ad","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Branch-Readme\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24063032b1c338eef797a04e28f30f7f7024a340","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Nigeltzy/master","messageBody":"Update Ui.png and index.md","fileTypesAndContributionMap":{}},{"hash":"1c39760238223a5e6b9121e7235ff66cc848ba08","isMergeCommit":false,"messageTitle":"Update website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":5}}},{"hash":"29c08b83321198d5b76aaa59689ff7550754c558","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Branch-updatewebsite\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf317e8cc54b3c1b3f96504491dcd48a950f205a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T08-3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"456142c7f153ab17a988e458d5c6a2c6baf2431c","isMergeCommit":true,"messageTitle":"Merge pull request #41 from chengzihao123/developer-guide","messageBody":"Modify the developer guide","fileTypesAndContributionMap":{}},{"hash":"5a9ccaa97603a7c35ff09d99ce1f947ad5602d75","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d2eee1d1f85b90124c8f88b35e535560ecc239d3","isMergeCommit":false,"messageTitle":"Add Patient.java base code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":0}}},{"hash":"1531b3d17e356a0fc08e9ba7b4299cc9020a1f1c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":9}}},{"hash":"4fa11927d479c8952297eb0abf8e7463d06bbbb3","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}}]},{"date":"2024-10-08","commitResults":[{"hash":"45a3ab7198b4c5e9a7554bd376dcb16282ebf360","isMergeCommit":true,"messageTitle":"Merge pull request #46 from chengzihao123/website","messageBody":"Modify Project Title","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"8bc6b400cfa53fec001ff8cbc38409a162996a0d","isMergeCommit":true,"messageTitle":"Merge pull request #49 from chengzihao123/project-website","messageBody":"Project website","fileTypesAndContributionMap":{}},{"hash":"ddfdca646a2604cf126dc6e520fcb1fede337841","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd9392e68ea1ab0ef5754ba5d348ce35920c8c58","isMergeCommit":false,"messageTitle":"Add base support for Patient Doctor classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":192,"deletions":33}}},{"hash":"42e9f071e4cd6f59ea548335c51827e6f2347308","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 43-extend-person-patient-doctor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e897fae292ea45820de8a0f082f964d16397137","isMergeCommit":true,"messageTitle":"Merge branch \u002743-extend-person-patient-doctor\u0027 of https://github.com/Nigeltzy/tp into 43-extend-person-patient-doctor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fe6da3b767d0dcb22ac1872b2e17b0fab3e660c2","isMergeCommit":false,"messageTitle":"Update Doctor.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"805932a8499a1e9bef79f37d4e03c110227a8e93","isMergeCommit":false,"messageTitle":"Add Javadoc comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"e98434ff81cb66f1e353ddfc4abca25294fac0ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T08-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"408ff33648cd456f8803ce4fbd4cf36a6b44b820","isMergeCommit":true,"messageTitle":"Merge commit \u0027e98434ff81cb66f1e353ddfc4abca25294fac0ab\u0027 into 43-extend-person-patient-doctor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0674e5a0a3b4f22c6b20db45c21f13a808aa6d82","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6899acc1b5cba53d5eb7e9748f44cadb7ba9ff60","isMergeCommit":false,"messageTitle":"Update Doctor.java conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":27}}},{"hash":"b6c85262b5e961f2e99f78898817a8871bda5bcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 43-extend-person-patient-doctor","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Doctor.java\n","fileTypesAndContributionMap":{}},{"hash":"05dbf14070230254ef6b1ee58e61b74b19c43c88","isMergeCommit":false,"messageTitle":"Update Javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":19}}},{"hash":"87d9c4b303bea259d702eef3590a6b4fb4ddd917","isMergeCommit":false,"messageTitle":"Update Javadocs again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"00fb1bcaaa0579894e9f9ca19fb5b1cd55921a39","isMergeCommit":false,"messageTitle":"Fix lexicographical order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-15","commitResults":[{"hash":"78cabc7a4148c04e4123994143eb19ac773c91cf","isMergeCommit":false,"messageTitle":"Update javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"344bfffcc4040a61c30d370eaaf574b3079bb895","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed0e4b3130866f93e7ceb8cc75d6a69e505e6467","isMergeCommit":false,"messageTitle":"Add Appointment.java and update Patient Id and Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":72}}},{"hash":"13a7f7874e52f255196f69a9b728422a3a8be57e","isMergeCommit":false,"messageTitle":"Update rest of base person model classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":153}}},{"hash":"93d07988913cc43f0f317e7bf45718bc0aeab1f5","isMergeCommit":false,"messageTitle":"Satisfy checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":17}}},{"hash":"1a6e85c8cda9486c1beb494a186d3d190f951fcd","isMergeCommit":false,"messageTitle":"Provide temporary Person functionality","messageBody":"Current test coverage fails as Logic and Parser and etc have not\nyet been updated to account for Patient and Doctor classes. The Id\nclass is giving errors when operating.\n\nFor the time being, the original Person class will be used in-place of\nPatient and Doctor instances.\n\nHowever, for future milestones, beyond\nthe MVP, let\u0027s:\n*Make Person an abstract class\n*Update all other parts of the code that relied on Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}}]},{"date":"2024-10-16","commitResults":[{"hash":"e4e7e969caa672c56ab80f311a67a58929aed45b","isMergeCommit":false,"messageTitle":"Add toString functionality and update generics for Appointment.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}},{"hash":"334e580c188d3cb45d958104685d3365317b050d","isMergeCommit":false,"messageTitle":"Remove generics from Appointment.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":11}}},{"hash":"70cee6254177d8586d03f6bfd19d16d8864520a0","isMergeCommit":false,"messageTitle":"Satisfy checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]}],"tyxiangs":[{"date":"2024-09-28","commitResults":[{"hash":"8cef6c83d15a09ba30a858363c9bff8e61e0e2c8","isMergeCommit":false,"messageTitle":"Add remark feature to AddressBook","messageBody":"This commit adds the functionality to allow users to attach or edit\nremarks for persons in the address book. The remark will be shown in\nthe UI and stored in the data file.\n\n- Implemented RemarkCommand to handle adding and editing remarks.\n- Added RemarkCommandParser to parse index and remark from user input.\n- Created the Remark class to represent a remark for each person.\n- Updated Person and PersonCard to handle and display remarks.\n- Updated JsonAdaptedPerson to store and retrieve remarks from storage.\n- Modified commands and tests to support the new remark field in Person.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":253,"deletions":45},"test-code":{"insertions":14,"deletions":1}}},{"hash":"aeb202b4942366c3b1a81f296fee2c87a4eca0c7","isMergeCommit":false,"messageTitle":"EOI fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"0298611a5fb49ba865adc078a2062e412453430b","isMergeCommit":false,"messageTitle":"EOF fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"a48f1a7d1af86ce5736a59a80da8eaf3da364e7d","isMergeCommit":false,"messageTitle":"CI fixing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":18,"deletions":13}}},{"hash":"9937d7614621d7413379f41a857a6fb739752746","isMergeCommit":false,"messageTitle":"Coding style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":19},"other":{"insertions":13,"deletions":18}}},{"hash":"44d3a9643e9f43bedf8c645c5da124fe9e3fc3d9","isMergeCommit":false,"messageTitle":"Style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ccda9f59a153508238dea804109f2fc710a5cdfc","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"3d1113068bb8bba1ba7f54455e95cb34956a415b","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":9}}},{"hash":"db27cc34b81321df1eb28574a86778eba08044be","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":18}}},{"hash":"2eb6691e5385546aad4d08aa3e4eb2a0a08aef5a","isMergeCommit":false,"messageTitle":"sfe","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":94}}},{"hash":"bf53c064844ee18f79cf16e0a77ba080ce02909d","isMergeCommit":false,"messageTitle":"4t","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":2}}},{"hash":"73a123ab47afd18015c22648f720bd39665e6317","isMergeCommit":false,"messageTitle":"wrw","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f16b3cdbb9b1c6f367230031f1cd2657ea44380e","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":20},"test-code":{"insertions":16,"deletions":20}}}]},{"date":"2024-10-03","commitResults":[{"hash":"82cac61be0cab35885390e0f5e52c79696ca474d","isMergeCommit":false,"messageTitle":"Update AboutUs page for course admin purposes","messageBody":"- Added personal details to the AboutUs page in the /team folder.\n- Followed the required format closely to ensure proper credit assignment.\n- Updated team roles and responsibilities as instructed.\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-07","commitResults":[{"hash":"009a94e1d95dc05c6191e4b18119f1a34dbf1995","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 42-update-ReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c4d9365ca534003b82dc880c06aaf47fd044b512","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Nigeltzy/42-update-ReadMe","messageBody":"42 update read me","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"c2efe22b23901f0912a804c61968d2cc1b4915ac","isMergeCommit":true,"messageTitle":"Merge pull request #45 from chengzihao123/website","messageBody":"Update project website","fileTypesAndContributionMap":{}},{"hash":"1299536cdcfe0778248c1fc762f118fdd85c6c48","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tyxiangs/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1718e53c226b3a3053f9db4c8b1ece55a82f05d","isMergeCommit":false,"messageTitle":"feat: Add Doctor class with scheduling functionality","messageBody":"- Implemented the `Doctor` class with unique ID generation.\n- Added a `TreeMap\u003cLocalDateTime, History\u003e` to store a doctor\u0027s schedule,\n allowing entries to be stored and automatically sorted by date and time.\n- Included methods to add and retrieve schedule entries.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":0}}},{"hash":"0650560db4aa33b093ec5a8925f72fa70deb0091","isMergeCommit":false,"messageTitle":"feat: Add Doctor class with scheduling functionality","messageBody":"Created `History` class to represent patient history with details such as patient name, diagnosis, and treatment.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"6d7c2197e276b86f0694e4d226abf6ee6307b48d","isMergeCommit":false,"messageTitle":"Refactor static variable name in Doctor class to follow Java naming conventions","messageBody":"- Renamed static variable \u0027ID\u0027 to \u0027currentId\u0027 to comply with Java\n and Checkstyle naming conventions for static variables.\n- Updated related references to the static variable throughout the Doctor class.\n- Add JavaDoc comment on function\n","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":6}}}]},{"date":"2024-10-16","commitResults":[{"hash":"d489cd893a9425a369df94abbe1d31049fc90d4a","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Nigeltzy/64-optimize-appointment","messageBody":"Add toString functionality and update generics for Appointment.java","fileTypesAndContributionMap":{}},{"hash":"6fd00ad3d7812d82d7f23e97a447ca2ab6f1fc03","isMergeCommit":true,"messageTitle":"Merge pull request #69 from chengzihao123/delete-appointment","messageBody":"Add deleteAppointment Command","fileTypesAndContributionMap":{}}]}],"chengzihao123":[{"date":"2024-10-03","commitResults":[{"hash":"752d6c97a158db3b04a87e4d01f5c8230b67d4a1","isMergeCommit":false,"messageTitle":"Modify AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-06","commitResults":[{"hash":"725d80f112e76ece9aad426e4af92da4e49c0c73","isMergeCommit":true,"messageTitle":"Merge pull request #39 from Nigeltzy/master","messageBody":"Update website","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"047b88a8b456c637cadf43f10d1e571f8f900436","isMergeCommit":false,"messageTitle":"Modify the developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":114,"deletions":33}}}]},{"date":"2024-10-08","commitResults":[{"hash":"ee2e47e2e97097407ca12ee0c90f238565df86db","isMergeCommit":false,"messageTitle":"Update project website","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"ab8e4b0162147568397f8e2a5d76dae9323a62be","isMergeCommit":false,"messageTitle":"Modify title","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ffb9ab76ad72c4fd31dace6cd74c8077d8066814","isMergeCommit":false,"messageTitle":"modify table","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1aac8d14269dd2d6aa5fbdf016355f7c04ab8f95","isMergeCommit":false,"messageTitle":"test 1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"b8cdcf06518478069dbfc1e9baa9a1f6c9c3b39c","isMergeCommit":false,"messageTitle":"test 2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":22}}},{"hash":"403911bf3cc357ca572d499556746aaaffbec91f","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":78}}},{"hash":"b47573bdf0ac4dd5ae90498089c5ae77adff6caf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into website","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"099ee2b04ab1612566e92bb4fb2b6250122e0207","isMergeCommit":true,"messageTitle":"Merge pull request #1 from chengzihao123/website","messageBody":"Website","fileTypesAndContributionMap":{}},{"hash":"0cf7696de2008ff347199bf4d98c00ea35622b9a","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"e94e6bef1109e3184e287360cc8fa5ed2dfe34ad","isMergeCommit":true,"messageTitle":"Merge pull request #48 from tyxiangs/branch-AddDoctor","messageBody":"Branch add doctor","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"ede17923167192046bc4885c97fdef2f7d04f90a","isMergeCommit":true,"messageTitle":"resolve changes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4afc86d169ee29b588ced395d0e9cfbec52ff32a","isMergeCommit":false,"messageTitle":"Add History class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":5}}}]},{"date":"2024-10-10","commitResults":[{"hash":"ded57fa53ddd6b5c27a8c50eb84d1557011b6c0d","isMergeCommit":true,"messageTitle":"Merge pull request #54 from sandyk0105/53-improve-historyjava","messageBody":"Improve History.java","fileTypesAndContributionMap":{}},{"hash":"9425b9efc51ce77f03dce4b332dcf409d575916c","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Nigeltzy/43-extend-person-patient-doctor","messageBody":"43 extend person patient doctor","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"7b87a954ddcd352c2c9858bbbd563f2a03e001e1","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Nigeltzy/56-update-base-classes","messageBody":"56 update base classes","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"8ff63528a896faa408ff9c82dd87d62aafd71aee","isMergeCommit":false,"messageTitle":"Add addAppointment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":277,"deletions":1}}},{"hash":"2f5a53d6e40313817aed886975f9fa8869a0fa5a","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":16}}},{"hash":"e7ca4a40361cae309b85f1e6b29f457391a318a0","isMergeCommit":false,"messageTitle":"Modify current test file","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"d9b38e3cfc95e3ccdbdaa8c3af81e61e13916252","isMergeCommit":false,"messageTitle":"Add delete appointment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":0}}}]}],"sandyk0105":[{"date":"2024-10-03","commitResults":[{"hash":"45338cb4b653df12bd7e206cec78899963dbd303","isMergeCommit":false,"messageTitle":"Update AboutUs for Sandy","messageBody":"Replace James Doe profile with Sandy\u0027s profile\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"1d3836defe0287576a05253f402c222d48c1ecd2","isMergeCommit":true,"messageTitle":"Merge pull request #51 from chengzihao123/History-class","messageBody":"Add a History class","fileTypesAndContributionMap":{}},{"hash":"b96bbca0edabacd84fa7293ca8684a33704c4b24","isMergeCommit":false,"messageTitle":"Improve History.java","messageBody":"Add one layer of encapsulation to\ngetAllAppointment() method\n\nHandle NPE in getOneAppointmentDetail(date, doctorId)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":3}}},{"hash":"c022c4142d949bd45e35f41465bb706a4eb7a1d2","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"shinichi04":[{"date":"2024-10-03","commitResults":[{"hash":"36b7f6903d48a25522334746cf44000ddea8aa70","isMergeCommit":false,"messageTitle":"Edit AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"Nigeltzy":{"docs":40,"functional-code":394,"test-code":0},"tyxiangs":{"docs":4,"functional-code":377,"test-code":30},"chengzihao123":{"docs":112,"functional-code":447,"test-code":18,"other":3},"sandyk0105":{"docs":1,"functional-code":22,"test-code":0},"shinichi04":{"docs":3,"functional-code":0,"test-code":0}},"authorContributionVariance":{"Nigeltzy":13173.184,"tyxiangs":25241.24,"chengzihao123":9299.641,"sandyk0105":30.80109,"shinichi04":1.2839499},"authorDisplayNameMap":{"Nigeltzy":"CS2103T-T08-3 NIGE.. YOU","tyxiangs":"CS2103T-T08-3 THAM..IANG","chengzihao123":"CS2103T-T08-3 CHEN..IHAO","sandyk0105":"CS2103T-T08-3 SAND..LUYO","shinichi04":"CS2103T-T08-3 AXEL..ANTO"}} +{"authorDailyContributionsMap":{"Nigeltzy":[{"date":"2024-10-03","commitResults":[{"hash":"b681f77fde006a9e9c2642f5dadfb32d07522d55","isMergeCommit":true,"messageTitle":"Merge pull request #21 from tyxiangs/branch-AddPhoto","messageBody":"Branch add photo","fileTypesAndContributionMap":{}},{"hash":"573a049bed49a2a3fdc6f4573f2336aed8e88bcf","isMergeCommit":false,"messageTitle":"Update AboutUs.md for Nigel \u003e\u003e\u003e\u003e\u003e\u003e\u003e master","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"856f28241cbbb0a4e2b99c111bf473dc2a6938e2","isMergeCommit":true,"messageTitle":"Merge pull request #32 from AY2425S1-CS2103T-T08-3/28-update-aboutus-sandy","messageBody":"Update AboutUs for Sandy","fileTypesAndContributionMap":{}},{"hash":"ccd2e5cab8bf47e9273de73170d1eab6defac118","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Nigeltzy/24-update-aboutusmd-nigel","messageBody":"Update AboutUs.md for Nigel","fileTypesAndContributionMap":{}},{"hash":"81242d0fa328df7255aa33b31886cbdf06f06fe9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 27-update-aboutus-axel","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e90dcd85335abb4524781848530e06c70d07006d","isMergeCommit":true,"messageTitle":"Merge pull request #29 from shinichi04/27-update-aboutus-axel","messageBody":"Edit AboutUs for Axel","fileTypesAndContributionMap":{}},{"hash":"00a481e6b8a67a4047372441a7a7886c09631381","isMergeCommit":true,"messageTitle":"Merge pull request #31 from tyxiangs/branch-UpdateAboutUs","messageBody":"Update AboutUs page for course admin purposes","fileTypesAndContributionMap":{}},{"hash":"4b7562ddd0ccb1ebd9a40ce8dfcb000328c6c4a2","isMergeCommit":true,"messageTitle":"Merge pull request #35 from chengzihao123/about-us","messageBody":"Modify AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"6dc4a7df566e50300161cd9ebd8cb82445a87400","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T08-3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"e420c0ebd91a08c471089f67d7b5367132b0d16b","isMergeCommit":false,"messageTitle":"Update Ui.png and index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6545bea8a8310054af7bd9308f93b5af963f75ad","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Branch-Readme\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"24063032b1c338eef797a04e28f30f7f7024a340","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Nigeltzy/master","messageBody":"Update Ui.png and index.md","fileTypesAndContributionMap":{}},{"hash":"1c39760238223a5e6b9121e7235ff66cc848ba08","isMergeCommit":false,"messageTitle":"Update website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":5}}},{"hash":"29c08b83321198d5b76aaa59689ff7550754c558","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Branch-updatewebsite\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf317e8cc54b3c1b3f96504491dcd48a950f205a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T08-3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"456142c7f153ab17a988e458d5c6a2c6baf2431c","isMergeCommit":true,"messageTitle":"Merge pull request #41 from chengzihao123/developer-guide","messageBody":"Modify the developer guide","fileTypesAndContributionMap":{}},{"hash":"5a9ccaa97603a7c35ff09d99ce1f947ad5602d75","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d2eee1d1f85b90124c8f88b35e535560ecc239d3","isMergeCommit":false,"messageTitle":"Add Patient.java base code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":0}}},{"hash":"1531b3d17e356a0fc08e9ba7b4299cc9020a1f1c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":9}}},{"hash":"4fa11927d479c8952297eb0abf8e7463d06bbbb3","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}}]},{"date":"2024-10-08","commitResults":[{"hash":"45a3ab7198b4c5e9a7554bd376dcb16282ebf360","isMergeCommit":true,"messageTitle":"Merge pull request #46 from chengzihao123/website","messageBody":"Modify Project Title","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"8bc6b400cfa53fec001ff8cbc38409a162996a0d","isMergeCommit":true,"messageTitle":"Merge pull request #49 from chengzihao123/project-website","messageBody":"Project website","fileTypesAndContributionMap":{}},{"hash":"ddfdca646a2604cf126dc6e520fcb1fede337841","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd9392e68ea1ab0ef5754ba5d348ce35920c8c58","isMergeCommit":false,"messageTitle":"Add base support for Patient Doctor classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":192,"deletions":33}}},{"hash":"42e9f071e4cd6f59ea548335c51827e6f2347308","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 43-extend-person-patient-doctor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e897fae292ea45820de8a0f082f964d16397137","isMergeCommit":true,"messageTitle":"Merge branch \u002743-extend-person-patient-doctor\u0027 of https://github.com/Nigeltzy/tp into 43-extend-person-patient-doctor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fe6da3b767d0dcb22ac1872b2e17b0fab3e660c2","isMergeCommit":false,"messageTitle":"Update Doctor.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"805932a8499a1e9bef79f37d4e03c110227a8e93","isMergeCommit":false,"messageTitle":"Add Javadoc comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"e98434ff81cb66f1e353ddfc4abca25294fac0ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T08-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"408ff33648cd456f8803ce4fbd4cf36a6b44b820","isMergeCommit":true,"messageTitle":"Merge commit \u0027e98434ff81cb66f1e353ddfc4abca25294fac0ab\u0027 into 43-extend-person-patient-doctor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0674e5a0a3b4f22c6b20db45c21f13a808aa6d82","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6899acc1b5cba53d5eb7e9748f44cadb7ba9ff60","isMergeCommit":false,"messageTitle":"Update Doctor.java conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":27}}},{"hash":"b6c85262b5e961f2e99f78898817a8871bda5bcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 43-extend-person-patient-doctor","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Doctor.java\n","fileTypesAndContributionMap":{}},{"hash":"05dbf14070230254ef6b1ee58e61b74b19c43c88","isMergeCommit":false,"messageTitle":"Update Javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":19}}},{"hash":"87d9c4b303bea259d702eef3590a6b4fb4ddd917","isMergeCommit":false,"messageTitle":"Update Javadocs again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"00fb1bcaaa0579894e9f9ca19fb5b1cd55921a39","isMergeCommit":false,"messageTitle":"Fix lexicographical order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-15","commitResults":[{"hash":"78cabc7a4148c04e4123994143eb19ac773c91cf","isMergeCommit":false,"messageTitle":"Update javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"344bfffcc4040a61c30d370eaaf574b3079bb895","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Nigeltzy/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed0e4b3130866f93e7ceb8cc75d6a69e505e6467","isMergeCommit":false,"messageTitle":"Add Appointment.java and update Patient Id and Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":72}}},{"hash":"13a7f7874e52f255196f69a9b728422a3a8be57e","isMergeCommit":false,"messageTitle":"Update rest of base person model classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":153}}},{"hash":"93d07988913cc43f0f317e7bf45718bc0aeab1f5","isMergeCommit":false,"messageTitle":"Satisfy checkstyle requirements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":17}}},{"hash":"1a6e85c8cda9486c1beb494a186d3d190f951fcd","isMergeCommit":false,"messageTitle":"Provide temporary Person functionality","messageBody":"Current test coverage fails as Logic and Parser and etc have not\nyet been updated to account for Patient and Doctor classes. The Id\nclass is giving errors when operating.\n\nFor the time being, the original Person class will be used in-place of\nPatient and Doctor instances.\n\nHowever, for future milestones, beyond\nthe MVP, let\u0027s:\n*Make Person an abstract class\n*Update all other parts of the code that relied on Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}}]},{"date":"2024-10-16","commitResults":[{"hash":"e4e7e969caa672c56ab80f311a67a58929aed45b","isMergeCommit":false,"messageTitle":"Add toString functionality and update generics for Appointment.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}},{"hash":"334e580c188d3cb45d958104685d3365317b050d","isMergeCommit":false,"messageTitle":"Remove generics from Appointment.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":11}}},{"hash":"70cee6254177d8586d03f6bfd19d16d8864520a0","isMergeCommit":false,"messageTitle":"Satisfy checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-17","commitResults":[{"hash":"51a4444ed60614c872f7788b8735b88aebd7d803","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tyxiangs/branch-History-Modification","messageBody":"History class: refactor appointment handling and formatting","fileTypesAndContributionMap":{}}]}],"tyxiangs":[{"date":"2024-09-28","commitResults":[{"hash":"8cef6c83d15a09ba30a858363c9bff8e61e0e2c8","isMergeCommit":false,"messageTitle":"Add remark feature to AddressBook","messageBody":"This commit adds the functionality to allow users to attach or edit\nremarks for persons in the address book. The remark will be shown in\nthe UI and stored in the data file.\n\n- Implemented RemarkCommand to handle adding and editing remarks.\n- Added RemarkCommandParser to parse index and remark from user input.\n- Created the Remark class to represent a remark for each person.\n- Updated Person and PersonCard to handle and display remarks.\n- Updated JsonAdaptedPerson to store and retrieve remarks from storage.\n- Modified commands and tests to support the new remark field in Person.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":253,"deletions":45},"test-code":{"insertions":14,"deletions":1}}},{"hash":"aeb202b4942366c3b1a81f296fee2c87a4eca0c7","isMergeCommit":false,"messageTitle":"EOI fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"0298611a5fb49ba865adc078a2062e412453430b","isMergeCommit":false,"messageTitle":"EOF fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"a48f1a7d1af86ce5736a59a80da8eaf3da364e7d","isMergeCommit":false,"messageTitle":"CI fixing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":18,"deletions":13}}},{"hash":"9937d7614621d7413379f41a857a6fb739752746","isMergeCommit":false,"messageTitle":"Coding style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":19},"other":{"insertions":13,"deletions":18}}},{"hash":"44d3a9643e9f43bedf8c645c5da124fe9e3fc3d9","isMergeCommit":false,"messageTitle":"Style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ccda9f59a153508238dea804109f2fc710a5cdfc","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"3d1113068bb8bba1ba7f54455e95cb34956a415b","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":9}}},{"hash":"db27cc34b81321df1eb28574a86778eba08044be","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":18}}},{"hash":"2eb6691e5385546aad4d08aa3e4eb2a0a08aef5a","isMergeCommit":false,"messageTitle":"sfe","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":94}}},{"hash":"bf53c064844ee18f79cf16e0a77ba080ce02909d","isMergeCommit":false,"messageTitle":"4t","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":2}}},{"hash":"73a123ab47afd18015c22648f720bd39665e6317","isMergeCommit":false,"messageTitle":"wrw","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f16b3cdbb9b1c6f367230031f1cd2657ea44380e","isMergeCommit":false,"messageTitle":"style fixing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":20},"test-code":{"insertions":16,"deletions":20}}}]},{"date":"2024-10-03","commitResults":[{"hash":"82cac61be0cab35885390e0f5e52c79696ca474d","isMergeCommit":false,"messageTitle":"Update AboutUs page for course admin purposes","messageBody":"- Added personal details to the AboutUs page in the /team folder.\n- Followed the required format closely to ensure proper credit assignment.\n- Updated team roles and responsibilities as instructed.\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-07","commitResults":[{"hash":"009a94e1d95dc05c6191e4b18119f1a34dbf1995","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 42-update-ReadMe","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c4d9365ca534003b82dc880c06aaf47fd044b512","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Nigeltzy/42-update-ReadMe","messageBody":"42 update read me","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"c2efe22b23901f0912a804c61968d2cc1b4915ac","isMergeCommit":true,"messageTitle":"Merge pull request #45 from chengzihao123/website","messageBody":"Update project website","fileTypesAndContributionMap":{}},{"hash":"1299536cdcfe0778248c1fc762f118fdd85c6c48","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tyxiangs/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1718e53c226b3a3053f9db4c8b1ece55a82f05d","isMergeCommit":false,"messageTitle":"feat: Add Doctor class with scheduling functionality","messageBody":"- Implemented the `Doctor` class with unique ID generation.\n- Added a `TreeMap\u003cLocalDateTime, History\u003e` to store a doctor\u0027s schedule,\n allowing entries to be stored and automatically sorted by date and time.\n- Included methods to add and retrieve schedule entries.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":0}}},{"hash":"0650560db4aa33b093ec5a8925f72fa70deb0091","isMergeCommit":false,"messageTitle":"feat: Add Doctor class with scheduling functionality","messageBody":"Created `History` class to represent patient history with details such as patient name, diagnosis, and treatment.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"6d7c2197e276b86f0694e4d226abf6ee6307b48d","isMergeCommit":false,"messageTitle":"Refactor static variable name in Doctor class to follow Java naming conventions","messageBody":"- Renamed static variable \u0027ID\u0027 to \u0027currentId\u0027 to comply with Java\n and Checkstyle naming conventions for static variables.\n- Updated related references to the static variable throughout the Doctor class.\n- Add JavaDoc comment on function\n","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":6}}}]},{"date":"2024-10-16","commitResults":[{"hash":"d1929bebc228b024ecb77d6e30a9f18de80cd4c0","isMergeCommit":false,"messageTitle":"History class: refactor appointment handling and formatting","messageBody":"The current `History` class manages patient appointment history but lacks\nclear formatting and effective handling of duplicates in several methods.\n\nThis commit refactors the `addAppointment`, `deleteAppointment`,\n`getAllPatientsAppointments`, \u0027toString\u0027 and `getAppointmentsForDay` methods to:\n\n- Ensure duplicate appointments are properly checked before adding or deleting.\n- Improve formatting of the appointment strings for clearer output.\n- Use `StringBuilder` for efficient string concatenation.\n- Adhere to checkstyle requirements by fixing line length and spacing issues.\n\nThese changes enhance the functionality and readability of the History class\nby ensuring correct handling of appointments and improved code quality.\n\nThis approach is taken to minimize code duplication and improve efficiency\nwhen handling multiple appointments for patients and doctors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":193,"deletions":74}}},{"hash":"c4becb7dad1f19a3367a1c852651269cd4501f5b","isMergeCommit":false,"messageTitle":"Revert \"History class: refactor appointment handling and formatting\"","messageBody":"This reverts commit d1929bebc228b024ecb77d6e30a9f18de80cd4c0.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":193}}},{"hash":"d489cd893a9425a369df94abbe1d31049fc90d4a","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Nigeltzy/64-optimize-appointment","messageBody":"Add toString functionality and update generics for Appointment.java","fileTypesAndContributionMap":{}},{"hash":"8b4afc62cca29c43b443902a9c5792f7d9ffc2b6","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T08-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"899a4637f023c30b67d67949d84254a94f23c50b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-History-Modification","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"11ca92cd31ef0e329252e15897ea5f005bbb58b0","isMergeCommit":false,"messageTitle":"refactor: Update History class to follow new Appointment format","messageBody":"The current implementation of the History class does not fully adapt\nwith the newest version Appointment class\n\nThis commit refactors the History class to follow the new coding standards.\nKey updates include:\n* Recreate appointment class and any functions that use Appointment as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":201,"deletions":67}}},{"hash":"6fd00ad3d7812d82d7f23e97a447ca2ab6f1fc03","isMergeCommit":true,"messageTitle":"Merge pull request #69 from chengzihao123/delete-appointment","messageBody":"Add deleteAppointment Command","fileTypesAndContributionMap":{}},{"hash":"6ee7e5cb1a6156ed84ad441e5f11655b4a7c8407","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-History-Modification","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cf8a904f4885b49870d39d7ae62e5fbffb537731","isMergeCommit":false,"messageTitle":"Code style fixing","messageBody":"Code style error due to trailling white space and wrong indentation\n\nremove trailing white space\nmake correct indentation\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":13}}}]},{"date":"2024-10-17","commitResults":[{"hash":"5e311fe33ab9c356737698c679cd8e8830a8b6d3","isMergeCommit":false,"messageTitle":"refactor: simplify appointment retrieval for patients and doctors","messageBody":"Refactored appointment retrieval methods to improve code readability and\nreusability by creating a common format utility for transforming an\nArrayList of appointments into a formatted string.\n\nChanges made:\n* Refactor getDoctorAppointmentsForRecentDays to use the new format utility.\n* Refactor getPatientAppointmentsForRecentDays to improve logic and ensure it checks only the patient\u0027s appointments.\n\nThese changes reduce duplication, improve maintainability, and ensure a\nconsistent appointment format across various methods. This will make the\ncodebase easier to extend in the future.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":5}}}]}],"chengzihao123":[{"date":"2024-10-03","commitResults":[{"hash":"752d6c97a158db3b04a87e4d01f5c8230b67d4a1","isMergeCommit":false,"messageTitle":"Modify AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-06","commitResults":[{"hash":"725d80f112e76ece9aad426e4af92da4e49c0c73","isMergeCommit":true,"messageTitle":"Merge pull request #39 from Nigeltzy/master","messageBody":"Update website","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"047b88a8b456c637cadf43f10d1e571f8f900436","isMergeCommit":false,"messageTitle":"Modify the developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":114,"deletions":33}}}]},{"date":"2024-10-08","commitResults":[{"hash":"ee2e47e2e97097407ca12ee0c90f238565df86db","isMergeCommit":false,"messageTitle":"Update project website","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"ab8e4b0162147568397f8e2a5d76dae9323a62be","isMergeCommit":false,"messageTitle":"Modify title","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ffb9ab76ad72c4fd31dace6cd74c8077d8066814","isMergeCommit":false,"messageTitle":"modify table","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1aac8d14269dd2d6aa5fbdf016355f7c04ab8f95","isMergeCommit":false,"messageTitle":"test 1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"b8cdcf06518478069dbfc1e9baa9a1f6c9c3b39c","isMergeCommit":false,"messageTitle":"test 2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":22}}},{"hash":"403911bf3cc357ca572d499556746aaaffbec91f","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":78}}},{"hash":"b47573bdf0ac4dd5ae90498089c5ae77adff6caf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into website","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"099ee2b04ab1612566e92bb4fb2b6250122e0207","isMergeCommit":true,"messageTitle":"Merge pull request #1 from chengzihao123/website","messageBody":"Website","fileTypesAndContributionMap":{}},{"hash":"0cf7696de2008ff347199bf4d98c00ea35622b9a","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"e94e6bef1109e3184e287360cc8fa5ed2dfe34ad","isMergeCommit":true,"messageTitle":"Merge pull request #48 from tyxiangs/branch-AddDoctor","messageBody":"Branch add doctor","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"ede17923167192046bc4885c97fdef2f7d04f90a","isMergeCommit":true,"messageTitle":"resolve changes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4afc86d169ee29b588ced395d0e9cfbec52ff32a","isMergeCommit":false,"messageTitle":"Add History class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":5}}}]},{"date":"2024-10-10","commitResults":[{"hash":"ded57fa53ddd6b5c27a8c50eb84d1557011b6c0d","isMergeCommit":true,"messageTitle":"Merge pull request #54 from sandyk0105/53-improve-historyjava","messageBody":"Improve History.java","fileTypesAndContributionMap":{}},{"hash":"9425b9efc51ce77f03dce4b332dcf409d575916c","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Nigeltzy/43-extend-person-patient-doctor","messageBody":"43 extend person patient doctor","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"7b87a954ddcd352c2c9858bbbd563f2a03e001e1","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Nigeltzy/56-update-base-classes","messageBody":"56 update base classes","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"8ff63528a896faa408ff9c82dd87d62aafd71aee","isMergeCommit":false,"messageTitle":"Add addAppointment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":277,"deletions":1}}},{"hash":"2f5a53d6e40313817aed886975f9fa8869a0fa5a","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":16}}},{"hash":"e7ca4a40361cae309b85f1e6b29f457391a318a0","isMergeCommit":false,"messageTitle":"Modify current test file","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"d9b38e3cfc95e3ccdbdaa8c3af81e61e13916252","isMergeCommit":false,"messageTitle":"Add delete appointment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":0}}}]}],"sandyk0105":[{"date":"2024-10-03","commitResults":[{"hash":"45338cb4b653df12bd7e206cec78899963dbd303","isMergeCommit":false,"messageTitle":"Update AboutUs for Sandy","messageBody":"Replace James Doe profile with Sandy\u0027s profile\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"1d3836defe0287576a05253f402c222d48c1ecd2","isMergeCommit":true,"messageTitle":"Merge pull request #51 from chengzihao123/History-class","messageBody":"Add a History class","fileTypesAndContributionMap":{}},{"hash":"b96bbca0edabacd84fa7293ca8684a33704c4b24","isMergeCommit":false,"messageTitle":"Improve History.java","messageBody":"Add one layer of encapsulation to\ngetAllAppointment() method\n\nHandle NPE in getOneAppointmentDetail(date, doctorId)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":3}}},{"hash":"c022c4142d949bd45e35f41465bb706a4eb7a1d2","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"shinichi04":[{"date":"2024-10-03","commitResults":[{"hash":"36b7f6903d48a25522334746cf44000ddea8aa70","isMergeCommit":false,"messageTitle":"Edit AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"Nigeltzy":{"docs":40,"functional-code":341,"test-code":0},"tyxiangs":{"docs":4,"functional-code":702,"test-code":30},"chengzihao123":{"docs":112,"functional-code":417,"test-code":18,"other":3},"sandyk0105":{"docs":1,"functional-code":14,"test-code":0},"shinichi04":{"docs":3,"functional-code":0,"test-code":0}},"authorContributionVariance":{"Nigeltzy":12762.503,"tyxiangs":46927.22,"chengzihao123":9004.177,"sandyk0105":29.758928,"shinichi04":1.2397954},"authorDisplayNameMap":{"Nigeltzy":"CS2103T-T08-3 NIGE.. YOU","tyxiangs":"CS2103T-T08-3 THAM..IANG","chengzihao123":"CS2103T-T08-3 CHEN..IHAO","sandyk0105":"CS2103T-T08-3 SAND..LUYO","shinichi04":"CS2103T-T08-3 AXEL..ANTO"}} diff --git a/AY2425S1-CS2103T-T11-4_tp_master/authorship.json b/AY2425S1-CS2103T-T11-4_tp_master/authorship.json index 828d7060..36994393 100644 --- a/AY2425S1-CS2103T-T11-4_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T11-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Nihirraa"},"content":"[![Java CI](https://github.com/AY2425S1-CS2103T-T11-4/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-4/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"nayanaamahesh"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T11-4/tp/graph/badge.svg?token\u003dILX4OY9RIL)](https://codecov.io/gh/AY2425S1-CS2103T-T11-4/tp)","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nihirraa"},"content":"# Health Connect","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"aditig0305"},"content":"Health Connect is an application designed to streamline client management for Singapore based healthcare professionals. ","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"aditig0305"},"content":"It allows users to efficiently track client details and appointments, simplifying the management process.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nihirraa"},"content":"## Features","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nihirraa"},"content":"_Health Connect enables users to:_","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nihirraa"},"content":"1. Add, view, and delete client data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nihirraa"},"content":"2. Manage client details, including allergies and appointment schedules.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nihirraa"},"content":"3. Ensure no duplicate entries for clients and appointments.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nihirraa"},"content":"## Other Details","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nihirraa"},"content":"* The project is written in an object-oriented style, with a clean and well-structured codebase.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nihirraa"},"content":"* It provides clear user and developer documentation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nihirraa"},"content":"* For more detailed documentation, visit the Health Connect Product Website **[here](https://ay2425s1-cs2103t-t11-4.github.io/tp/)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nihirraa"},"content":"* Health Connect is based on the AddressBook-Level3 project, as part of the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"Nihirraa":18,"aditig0305":2,"-":2,"nayanaamahesh":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Sornsornah"},"content":"### Jason Lek","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Sornsornah"},"content":"\u003cimg src\u003d\"images/sornsornah.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Sornsornah"},"content":"[[github](https://github.com/sornsornah)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Sornsornah"},"content":"* Role: Software Engineer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Sornsornah"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"aditig0305"},"content":"### Aditi Gawande","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"aditig0305"},"content":"\u003cimg src\u003d\"images/aditig0305.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"aditig0305"},"content":"[[github](http://github.com/aditig0305)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"aditig0305"},"content":"* Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"samriddh2145"},"content":"### Samriddh Agarwal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"samriddh2145"},"content":"\u003cimg src\u003d\"images/samriddh2145.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"samriddh2145"},"content":"[[github](http://github.com/samriddh2145)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nihirraa"},"content":"### Nihirra Kakkar","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nihirraa"},"content":"\u003cimg src\u003d\"images/nihirraa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nihirraa"},"content":"[[github](http://github.com/Nihirraa)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Nihirraa"},"content":"* Role: tester","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"nayanaamahesh"},"content":"### Nayana Mahesh","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":"\u003cimg src\u003d\"images/nayanaamahesh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"[[github](https://github.com/nayanaamahesh)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"aditig0305":4,"Nihirraa":4,"Sornsornah":5,"-":41,"nayanaamahesh":3}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"nayanaamahesh"},"content":"Home-based healthcare providers who","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"nayanaamahesh"},"content":"* Has a need to manage a significant number of patients information ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"nayanaamahesh"},"content":"* Needs to see their daily schedule of patient appointments","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"nayanaamahesh"},"content":"* Needs to be reminded up upcoming appointments","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"nayanaamahesh"},"content":"* Tag patients based on allergies and other medical information","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"nayanaamahesh"},"content":"* Can type fast","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"nayanaamahesh"},"content":"* Prefers typing to mouse interactions","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"nayanaamahesh"},"content":"* Is reasonably comfortable using CLI apps","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"aditig0305"},"content":"* Are based in Singapore","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"aditig0305"},"content":"**Value proposition**: Our patient management system empowers home-based healthcare providers to efficiently retrieve and prioritise patient information, enabling them to provide personalized care and see their schedule for the day.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Sornsornah"},"content":"Priorities: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"Sornsornah"},"content":"- High (must have): `***`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"Sornsornah"},"content":"- Medium (nice to have) - `**`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Sornsornah"},"content":"- Low (unlikely to have) - `*`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Sornsornah"},"content":"|----------|--------------------------------|------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | add the data of new clients | register new clients in the system for tracking |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | tag patients based on their urgency | prioritise higher-risk patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | tag a client\u0027s entry or information | keep track of special instructions, preferences, medical allergies or urgency |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | store prescription | add prescription records to keep track of which medications patients should take |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | add relevant reports such as X-rays | access such details for reference when explaining the conditions to patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | add notes for reference during future visits | recall important details upon next visit |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | record patients\u0027 feedback | address them in future visits |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | be notified of overlapping names and addresses | avoid duplicate client entries |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | see my patients\u0027 records | understand how my patient is doing |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | see my patients\u0027 allergies | provide the correct prescription for my patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | view my patient\u0027s emergency contacts quickly | reach them in case of emergency |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | view all clients sorted by their last visit date | priortise follow up visits |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | track medicine and medical equipment used for each patient\u0027s treatment | maintain an accurate log and ensure consistency in care plan |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | check number of visits for a particular patient in a given time period | ensure balance between patients\u0027 needs and my availability |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | delete the records of patients whom I am not seeing anymore | keep my address book concise and clutter-free |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | remove old or inactive clients from the address book | keep the list relevant |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | edit the details of my clients\u0027 address | locate a person easily |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | have the contact details of my patients for easy access | update the details accordingly if there are any changes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | add new appointment details | add appointments in my schedule for tracking later on |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | see my schedule for the day | organise my time and ensure that there are no clashes in appointments |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | be reminded of my clients\u0027 appointments nearer to the date | organise my time |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | generate the route for the day | efficiently travel to different locations and save time |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | send notifications to patients | they can expect my arrival |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | schedule recurring visits for clients directly in the address book | avoid re-entering their information each time |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | check last month\u0027s payment and visits summary | track my workload |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | group patients according to patient and priority | save travel time or focus on more urgent cases |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | get notifications in the event an emergency occurs | respond as quickly as possible and know whether there is a need to go to the patient\u0027s house |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | see the services provided for each patient | know how much I should be charging my patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | see which of my patients have paid | keep track of how much my patients owe me |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | record when my patients pay for their appointment | keep track of which patients have paid for my services ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | show insurance details for patients | generate patient\u0027s bill accordingly","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"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","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"aditig0305"},"content":"**Use case: Add a client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"aditig0305"},"content":"1. User requests to add a client and provides the required client details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"aditig0305"},"content":"2. AddressBook validates the input ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"aditig0305"},"content":"3. AddressBook adds the client data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"aditig0305"},"content":"4. AddressBook confirms the successful addition of the client.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"aditig0305"},"content":"* 2a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"aditig0305"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"aditig0305"},"content":"* 2b. Duplicate Client","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"aditig0305"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"aditig0305"},"content":"**Use case: Delete client data**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"aditig0305"},"content":"1. User requests to list clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"aditig0305"},"content":"2. AddressBook shows a list of clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"aditig0305"},"content":"3. User requests to delete a client’s data and inputs the required client details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"aditig0305"},"content":"4. AddressBook validates the input","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"aditig0305"},"content":"5. AddressBook deletes the person","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"aditig0305"},"content":"* 4a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"aditig0305"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"aditig0305"},"content":"* 4b. Duplicate Client","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"aditig0305"},"content":" * 4b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"aditig0305"},"content":"* 4c. Information mismatch","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"aditig0305"},"content":" * 4c1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"aditig0305"},"content":"**Use case: Record Client Payment**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"aditig0305"},"content":"1. User requests to list clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"aditig0305"},"content":"2. AddressBook shows a list of clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"aditig0305"},"content":"3. User requests to record a payment by providing the client’s name, phone number, and amount paid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"aditig0305"},"content":"4. AddressBook validates the input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"aditig0305"},"content":"5. AddressBook records the payment.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"aditig0305"},"content":"* 4a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"aditig0305"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"aditig0305"},"content":"* 4b. Name and Phone Number mismatch","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"aditig0305"},"content":" * 4b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"aditig0305"},"content":"**Use case: Tag a client’s priority**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"aditig0305"},"content":"1. User requests to list clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"aditig0305"},"content":"2. AddressBook shows a list of clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"aditig0305"},"content":"3. User requests to tag a specific person and specifies their name, number and the tag.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"aditig0305"},"content":"4. AddressBook validates the input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"aditig0305"},"content":"5. AddressBook tags the client\u0027s priority.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"aditig0305"},"content":"* 4a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"aditig0305"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"aditig0305"},"content":"* 4b. Name and Phone Number mismatch","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"aditig0305"},"content":" * 4b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"aditig0305"},"content":"**Use case: Show schedule for the day**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"aditig0305"},"content":"1. User requests to see the schedule for the day and inputs the date.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"aditig0305"},"content":"2. AddressBook validates the input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"aditig0305"},"content":"3. AddressBook shows the schedule for the day.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"aditig0305"},"content":"* 2a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"aditig0305"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"Sornsornah"},"content":"4. The system should respond within 5 seconds for any commands given.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"Sornsornah"},"content":"5. Command syntax should be consistent throughout the application to minimize the learning curve.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"Sornsornah"},"content":"6. Users should be able to run the application from the downloaded JAR file without an additional installer.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"Sornsornah"},"content":"7. The system should provide meaningful, yet concise error messages for the user to easily make the necessary changes.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"Sornsornah"},"content":"8. The codebase should be modular to facilitate easy maintenance and future enhancements.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"Sornsornah"},"content":"9. The code should be well-documented with clear comments to assist future developers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"Sornsornah"},"content":"10. The application should have a smooth user experience that is intuitive and easy to use.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"Sornsornah"},"content":"11. The system should be customised for operations by a single user and need not handle multiple user-access.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"Sornsornah"},"content":"12. Configuration and data files should use standard formats to ensure compatibility with text editors and other applications.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"Sornsornah"},"content":"13. The system should validate all user inputs to prevent errors when saving the information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"Sornsornah"},"content":"* **Patient Record**: A collection of patient\u0027s personal and medical information. This includes, but is not limited to, name, contact number, email, address, allergies, injuries sustained.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"Sornsornah"},"content":"* **Appointment**: A scheduled session between the healthcare provider and patient for medical consultation or treatment. This is marked in the AddressBook by the time, location and patient.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"Sornsornah"},"content":"* **Schedule**: A list of all patients\u0027 appointments, displaying the date and time and location of the appointments.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"Sornsornah"},"content":"* **Tag**: A label applied to a patient record, used to categorise and highlight specific medical information, such as allergies or conditions.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"Sornsornah"},"content":"* **Medical History**: Documentation of patient\u0027s past illnesses, treatments, surgeries and other medical related information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"Sornsornah"},"content":"* **Inactive Client**: A client who is no longer receiving care or whose records have not been accessed in a significant amount of time","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"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","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"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","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"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","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":507,"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","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":512,"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","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"aditig0305":105,"Sornsornah":52,"-":358,"nayanaamahesh":8}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nayanaamahesh"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS t/TAG…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"nayanaamahesh"},"content":"A patient must have one tag (no more no less)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"nayanaamahesh"},"content":"The tag must be one of the following","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nayanaamahesh"},"content":"1. High Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"nayanaamahesh"},"content":"2. Medium Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"nayanaamahesh"},"content":"3. Low Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nayanaamahesh"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/ High Risk`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":"* `add n/Betsy-Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/Low Risk`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"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","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"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","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":188,"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"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","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"-":195,"nayanaamahesh":8}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"samriddh2145"},"content":"title: \"HealthConnect\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"samriddh2145"},"content":"repository: \"AY2425S1-CS2103T-T11-4/tp\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"samriddh2145":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"samriddh2145"},"content":" content: \"HealthConnect\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"samriddh2145":1,"-":293}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" .append(\"; Tag: \")","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" .append(person.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":49,"nayanaamahesh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" + PREFIX_TAG + \"TAG\\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" + PREFIX_TAG + \"Low Risk\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":81,"nayanaamahesh":2}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nayanaamahesh"},"content":" Tag updatedTags \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"nayanaamahesh"},"content":" private Tag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"nayanaamahesh"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"nayanaamahesh"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"nayanaamahesh"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"nayanaamahesh"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"nayanaamahesh"},"content":" return (tag !\u003d null) ? Optional.of(tag) : Optional.empty();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"nayanaamahesh"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"nayanaamahesh"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"-":228,"nayanaamahesh":11}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"samriddh2145"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"samriddh2145"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"samriddh2145":2,"-":22}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" Person person \u003d new Person(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":57,"nayanaamahesh":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"samriddh2145"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"samriddh2145"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"samriddh2145"},"content":" return new ViewCommand();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":63,"nayanaamahesh":4}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"nayanaamahesh"},"content":" \"Names should only contain alphanumeric characters, spaces, and hyphens, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"nayanaamahesh"},"content":" //accepts only alphanumeric characters, spaces, and hyphens","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-zA-Z0-9][a-zA-Z0-9\\\\s-]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" return fullName.equalsIgnoreCase(otherName.fullName);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":63,"nayanaamahesh":4}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":" private final Tag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" public Person(Name name, Phone phone, Email email, Address address, Tag tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" requireAllNonNull(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" public Tag getTag() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" return tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nayanaamahesh"},"content":" \u0026\u0026 (otherPerson.getName().equals(getName()) \u0026\u0026 otherPerson.getPhone().equals(getPhone()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"nayanaamahesh"},"content":" \u0026\u0026 tag.equals(otherPerson.tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nayanaamahesh"},"content":" return Objects.hash(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":104,"nayanaamahesh":10}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Sornsornah"},"content":" \"Invalid Singapore phone number input. Enter a valid phone number that is more than 3 digits.\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Sornsornah"},"content":" public static final String VALIDATION_REGEX \u003d \"[3689]\\\\d{7}\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"aditig0305"},"content":" String trimmedPhone \u003d phone.replaceAll(\" \", \"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"aditig0305"},"content":" checkArgument(isValidPhone(trimmedPhone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"aditig0305"},"content":" value \u003d trimmedPhone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"aditig0305":6,"Sornsornah":2,"-":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags should be High Risk, Medium Risk or Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALIDATION_REGEX \u003d \"High Risk|Medium Risk|Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"nayanaamahesh"},"content":" public static final String MESSAGE_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s Tag field is missing!\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"nayanaamahesh"},"content":" tagName \u003d tagName.strip();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" return tagName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":57,"nayanaamahesh":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"High Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"High Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Medium Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\"))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":40,"nayanaamahesh":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":" private final JsonAdaptedTag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nayanaamahesh"},"content":" @JsonProperty(\"tags\") JsonAdaptedTag tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" tag \u003d new JsonAdaptedTag(source.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" Tag personTag \u003d null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"nayanaamahesh"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nayanaamahesh"},"content":" throw new IllegalValueException(Tag.MESSAGE_FIELD_MESSAGE_FORMAT);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"nayanaamahesh"},"content":" personTag \u003d tag.toModelType();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nayanaamahesh"},"content":" final Tag finalPersonTag \u003d personTag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nayanaamahesh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, finalPersonTag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":88,"nayanaamahesh":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":" tags.getChildren().add(new Label(person.getTag().tagName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":54,"nayanaamahesh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"samriddh2145"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"samriddh2145"},"content":" String listCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"samriddh2145"},"content":" assertCommandSuccess(listCommand, ViewCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"nayanaamahesh"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"nayanaamahesh"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":170,"nayanaamahesh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Sornsornah"},"content":" System.out.println(expected);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Sornsornah"},"content":" System.out.println(addCommand.toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob-Choo\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Sornsornah"},"content":" public static final String VALID_PHONE_AMY \u003d \"99999999\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Sornsornah"},"content":" public static final String VALID_PHONE_BOB \u003d \"88888888\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_TAG_HIGH_RISK \u003d \"High Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_TAG_MEDIUM_RISK \u003d \"Medium Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_TAG_LOW_RISK \u003d \"Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" public static final String TAG_DESC_LOW_RISK \u003d \" \" + PREFIX_TAG + VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"nayanaamahesh"},"content":" public static final String TAG_DESC_HIGH_RISK \u003d \" \" + PREFIX_TAG + VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" // The only tags allowed are High Risk, Low Risk, Medium Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":118,"nayanaamahesh":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"-":181,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"nayanaamahesh"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tag\u003d\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"nayanaamahesh"},"content":" + editPersonDescriptor.getTag().orElse(null) + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":67,"nayanaamahesh":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"samriddh2145"},"content":"class ViewCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"samriddh2145"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"samriddh2145"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":36}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"nayanaamahesh"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTag(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_LOW_RISK, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"nayanaamahesh"},"content":" // missing tag prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_HIGH_RISK, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_HIGH_RISK, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"nayanaamahesh"},"content":" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"nayanaamahesh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":164,"nayanaamahesh":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"samriddh2145"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"samriddh2145"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"samriddh2145"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":98}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_nullArgs_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HIGH_RISK","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nayanaamahesh"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"nayanaamahesh"},"content":" // tag","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"nayanaamahesh"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"nayanaamahesh"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_multipleTags_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"nayanaamahesh"},"content":" // Multiple tags provided","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"nayanaamahesh"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"nayanaamahesh"},"content":" String userInput \u003d \"edit \" + targetIndex.getOneBased() + TAG_DESC_HIGH_RISK + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"nayanaamahesh"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, userInput, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_emptyTags_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"nayanaamahesh"},"content":" // Attempt to edit a person without providing a tag","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"nayanaamahesh"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"nayanaamahesh"},"content":" String userInput \u003d \"edit \" + targetIndex.getOneBased() + PREFIX_TAG; // Only name is edited","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"nayanaamahesh"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, userInput, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_validTagCases_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"nayanaamahesh"},"content":" // Tags with correct casing","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"nayanaamahesh"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"nayanaamahesh"},"content":" String userInputHigh \u003d targetIndex.getOneBased() + \" \" + PREFIX_TAG + \"High Risk\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"nayanaamahesh"},"content":" EditPersonDescriptor descriptorHigh \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"nayanaamahesh"},"content":" EditCommand expectedCommandHigh \u003d new EditCommand(targetIndex, descriptorHigh);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"nayanaamahesh"},"content":" assertParseSuccess(parser, userInputHigh, expectedCommandHigh);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"nayanaamahesh"},"content":" String userInputMedium \u003d targetIndex.getOneBased() + \" \" + PREFIX_TAG + \"Medium Risk\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"nayanaamahesh"},"content":" EditPersonDescriptor descriptorMedium \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(\"Medium Risk\").build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"nayanaamahesh"},"content":" EditCommand expectedCommandMedium \u003d new EditCommand(targetIndex, descriptorMedium);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"nayanaamahesh"},"content":" assertParseSuccess(parser, userInputMedium, expectedCommandMedium);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"nayanaamahesh"},"content":" String userInputLow \u003d targetIndex.getOneBased() + \" \" + PREFIX_TAG + \"Low Risk\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"nayanaamahesh"},"content":" EditPersonDescriptor descriptorLow \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"nayanaamahesh"},"content":" EditCommand expectedCommandLow \u003d new EditCommand(targetIndex, descriptorLow);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"nayanaamahesh"},"content":" assertParseSuccess(parser, userInputLow, expectedCommandLow);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_LOW_RISK","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"nayanaamahesh"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"-":179,"nayanaamahesh":62}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Sornsornah"},"content":" private static final String VALID_PHONE \u003d \"98765432\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" private static final String VALID_TAG_1 \u003d \"High Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" private static final String VALID_TAG_2 \u003d \"Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"Sornsornah":1,"-":164,"nayanaamahesh":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"-":105,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Sornsornah"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"98765432\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Sornsornah"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":83}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Name.isValidName(\"Amelia-Leigh\")); // with hyphen and alphabets only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Name.isValidName(\"1234-452\")); // with hyphen and numbers only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Name.isValidName(\"Amelia-Leigh the 2nd\")); // with hyphen and alphanumeric characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":" //same name different capitalization -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(name.equals(new Name(\"valid name\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"-":60,"nayanaamahesh":6}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nayanaamahesh"},"content":" .withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nayanaamahesh"},"content":" // different name, phone number same -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" //different people -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(ALICE.isSamePerson(BOB));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" //same name, same phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nayanaamahesh"},"content":" public void hashCode_samePerson_sameHashCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"nayanaamahesh"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"nayanaamahesh"},"content":" public void hashCode_differentPersons_differentHashCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d BOB.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nayanaamahesh"},"content":" public void constructor_allFieldsPresent_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nayanaamahesh"},"content":" Person person \u003d new PersonBuilder().withName(\"Charlie\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Sornsornah"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"charlie@example.com\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nayanaamahesh"},"content":" .withAddress(\"123, Charlies Street\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(\"Medium Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"Charlie\", person.getName().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Sornsornah"},"content":" assertEquals(\"98765432\", person.getPhone().toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"charlie@example.com\", person.getEmail().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"123, Charlies Street\", person.getAddress().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"Medium Risk\", person.getTag().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"nayanaamahesh"},"content":" public void getters_allFieldsCorrectlyRetrieved() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getName(), ALICE.getName());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getPhone(), ALICE.getPhone());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getEmail(), ALICE.getEmail());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getAddress(), ALICE.getAddress());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getTag(), ALICE.getTag());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"nayanaamahesh"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tag\u003d\" + ALICE.getTag() + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":83,"nayanaamahesh":52}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"aditig0305"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"aditig0305"},"content":" public void constructor_validPhone_withSpaces() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"aditig0305"},"content":" Phone longPhoneWithSpaces \u003d new Phone(\" 93121534 \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"aditig0305"},"content":" assertTrue(longPhoneWithSpaces.equals(new Phone(\"93121534\"))); // Should equal the trimmed version","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"aditig0305"},"content":" Phone mixedSpaces2 \u003d new Phone(\" 98 76 54 32 \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"aditig0305"},"content":" assertTrue(mixedSpaces2.equals(new Phone(\"98765432\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"aditig0305"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Sornsornah"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 8 numbers","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Sornsornah"},"content":" assertFalse(Phone.isValidPhone(\"124293842033123\")); // more than 8 digits","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"93121534\")); //phone number starts with 9","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"83121534\")); //phone number starts with 8","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"63121534\")); //phone number starts with 6","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"33121534\")); //phone number starts with 3","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Sornsornah"},"content":" Phone phone \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Sornsornah"},"content":" assertTrue(phone.equals(new Phone(\"98765432\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Sornsornah"},"content":" assertFalse(phone.equals(new Phone(\"97654321\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"aditig0305":10,"Sornsornah":9,"-":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":172,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"nayanaamahesh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"nayanaamahesh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"nayanaamahesh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":" public void constructor_validTagName_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"nayanaamahesh"},"content":" // Valid tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Medium Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" // invalid tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(Tag.isValidTagName(\"\")); // empty string","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(Tag.isValidTagName(\"High\")); // partial match","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(Tag.isValidTagName(\"high risk\")); // lowercase","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nayanaamahesh"},"content":" // valid tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Tag.isValidTagName(\"High Risk\"));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Tag.isValidTagName(\"Medium Risk\"));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Tag.isValidTagName(\"Low Risk\"));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" public void equals() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag1 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag2 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag3 \u003d new Tag(\"Low Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"nayanaamahesh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(tag1.equals(tag1));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(tag1.equals(tag2));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(tag1.equals(tag3));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"nayanaamahesh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(tag1.equals(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"nayanaamahesh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(tag1.equals(5)); // comparing with integer","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"nayanaamahesh"},"content":" public void hashCode_sameTagName_sameHashCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag1 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag2 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(tag1.hashCode(), tag2.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nayanaamahesh"},"content":" public void toString_validTagName_correctString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag \u003d new Tag(\"Medium Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"Medium Risk\", tag.toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04","isFullCredit":false}],"authorContributionMap":{"-":26,"nayanaamahesh":55}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"nayanaamahesh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" private static final JsonAdaptedTag VALID_TAG \u003d new JsonAdaptedTag(BENSON.getTag().toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedTag invalidTag \u003d new JsonAdaptedTag(INVALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nayanaamahesh"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nayanaamahesh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nayanaamahesh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":92,"nayanaamahesh":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nayanaamahesh"},"content":" public EditPersonDescriptorBuilder withTags(String tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nayanaamahesh"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":79,"nayanaamahesh":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"nayanaamahesh"},"content":" public static final String DEFAULT_TAG \u003d \"Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":" private Tag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"nayanaamahesh"},"content":" public PersonBuilder withTag(String tag) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nayanaamahesh"},"content":" return new Person(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":86,"nayanaamahesh":7}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" sb.append(PREFIX_TAG + person.getTag().tagName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"nayanaamahesh"},"content":" descriptor.getTag().ifPresent(tag -\u003e sb.append(PREFIX_TAG).append(tag.tagName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":48,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"aditig0305"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"94822242\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"aditig0305"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"94824272\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"aditig0305"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"94824422\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"aditig0305"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"84824242\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"aditig0305"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"84821312\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTag(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"aditig0305":5,"-":59,"nayanaamahesh":12}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Nihirraa"},"content":"[![Java CI](https://github.com/AY2425S1-CS2103T-T11-4/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-4/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"nayanaamahesh"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T11-4/tp/graph/badge.svg?token\u003dILX4OY9RIL)](https://codecov.io/gh/AY2425S1-CS2103T-T11-4/tp)","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Nihirraa"},"content":"# Health Connect","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"aditig0305"},"content":"Health Connect is an application designed to streamline client management for Singapore based healthcare professionals. ","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"aditig0305"},"content":"It allows users to efficiently track client details and appointments, simplifying the management process.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Nihirraa"},"content":"## Features","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Nihirraa"},"content":"_Health Connect enables users to:_","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Nihirraa"},"content":"1. Add, view, and delete client data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Nihirraa"},"content":"2. Manage client details, including allergies and appointment schedules.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Nihirraa"},"content":"3. Ensure no duplicate entries for clients and appointments.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Nihirraa"},"content":"## Other Details","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Nihirraa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Nihirraa"},"content":"* The project is written in an object-oriented style, with a clean and well-structured codebase.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Nihirraa"},"content":"* It provides clear user and developer documentation.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Nihirraa"},"content":"* For more detailed documentation, visit the Health Connect Product Website **[here](https://ay2425s1-cs2103t-t11-4.github.io/tp/)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Nihirraa"},"content":"* Health Connect is based on the AddressBook-Level3 project, as part of the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"Nihirraa":18,"aditig0305":2,"-":2,"nayanaamahesh":1}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Sornsornah"},"content":"### Jason Lek","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Sornsornah"},"content":"\u003cimg src\u003d\"images/sornsornah.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Sornsornah"},"content":"[[github](https://github.com/sornsornah)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Sornsornah"},"content":"* Role: Software Engineer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Sornsornah"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"aditig0305"},"content":"### Aditi Gawande","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"aditig0305"},"content":"\u003cimg src\u003d\"images/aditig0305.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"aditig0305"},"content":"[[github](http://github.com/aditig0305)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"aditig0305"},"content":"* Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"samriddh2145"},"content":"### Samriddh Agarwal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"samriddh2145"},"content":"\u003cimg src\u003d\"images/samriddh2145.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"samriddh2145"},"content":"[[github](http://github.com/samriddh2145)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Nihirraa"},"content":"### Nihirra Kakkar","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Nihirraa"},"content":"\u003cimg src\u003d\"images/nihirraa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Nihirraa"},"content":"[[github](http://github.com/Nihirraa)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Nihirraa"},"content":"* Role: tester","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"nayanaamahesh"},"content":"### Nayana Mahesh","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":"\u003cimg src\u003d\"images/nayanaamahesh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"[[github](https://github.com/nayanaamahesh)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"aditig0305":4,"Nihirraa":4,"Sornsornah":5,"-":41,"nayanaamahesh":3}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"nayanaamahesh"},"content":"Home-based healthcare providers who","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"nayanaamahesh"},"content":"* Has a need to manage a significant number of patients information ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"nayanaamahesh"},"content":"* Needs to see their daily schedule of patient appointments","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"nayanaamahesh"},"content":"* Needs to be reminded up upcoming appointments","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"nayanaamahesh"},"content":"* Tag patients based on allergies and other medical information","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"nayanaamahesh"},"content":"* Can type fast","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"nayanaamahesh"},"content":"* Prefers typing to mouse interactions","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"nayanaamahesh"},"content":"* Is reasonably comfortable using CLI apps","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"aditig0305"},"content":"* Are based in Singapore","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"aditig0305"},"content":"**Value proposition**: Our patient management system empowers home-based healthcare providers to efficiently retrieve and prioritise patient information, enabling them to provide personalized care and see their schedule for the day.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Sornsornah"},"content":"Priorities: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"Sornsornah"},"content":"- High (must have): `***`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"Sornsornah"},"content":"- Medium (nice to have) - `**`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Sornsornah"},"content":"- Low (unlikely to have) - `*`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Sornsornah"},"content":"|----------|--------------------------------|------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | add the data of new clients | register new clients in the system for tracking |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | tag patients based on their urgency | prioritise higher-risk patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | tag a client\u0027s entry or information | keep track of special instructions, preferences, medical allergies or urgency |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | store prescription | add prescription records to keep track of which medications patients should take |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | add relevant reports such as X-rays | access such details for reference when explaining the conditions to patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | add notes for reference during future visits | recall important details upon next visit |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | record patients\u0027 feedback | address them in future visits |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | be notified of overlapping names and addresses | avoid duplicate client entries |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | see my patients\u0027 records | understand how my patient is doing |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | see my patients\u0027 allergies | provide the correct prescription for my patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | view my patient\u0027s emergency contacts quickly | reach them in case of emergency |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | view all clients sorted by their last visit date | priortise follow up visits |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | track medicine and medical equipment used for each patient\u0027s treatment | maintain an accurate log and ensure consistency in care plan |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | check number of visits for a particular patient in a given time period | ensure balance between patients\u0027 needs and my availability |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | delete the records of patients whom I am not seeing anymore | keep my address book concise and clutter-free |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | remove old or inactive clients from the address book | keep the list relevant |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | edit the details of my clients\u0027 address | locate a person easily |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | have the contact details of my patients for easy access | update the details accordingly if there are any changes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | add new appointment details | add appointments in my schedule for tracking later on |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Sornsornah"},"content":"| `***` | home-based healthcare provider | see my schedule for the day | organise my time and ensure that there are no clashes in appointments |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | be reminded of my clients\u0027 appointments nearer to the date | organise my time |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | generate the route for the day | efficiently travel to different locations and save time |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | send notifications to patients | they can expect my arrival |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | schedule recurring visits for clients directly in the address book | avoid re-entering their information each time |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | check last month\u0027s payment and visits summary | track my workload |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | group patients according to patient and priority | save travel time or focus on more urgent cases |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Sornsornah"},"content":"| `*` | home-based healthcare provider | get notifications in the event an emergency occurs | respond as quickly as possible and know whether there is a need to go to the patient\u0027s house |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | see the services provided for each patient | know how much I should be charging my patients |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | see which of my patients have paid | keep track of how much my patients owe me |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | record when my patients pay for their appointment | keep track of which patients have paid for my services ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Sornsornah"},"content":"| `**` | home-based healthcare provider | show insurance details for patients | generate patient\u0027s bill accordingly","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"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","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"aditig0305"},"content":"**Use case: Add a client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"aditig0305"},"content":"1. User requests to add a client and provides the required client details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"aditig0305"},"content":"2. AddressBook validates the input ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"aditig0305"},"content":"3. AddressBook adds the client data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"aditig0305"},"content":"4. AddressBook confirms the successful addition of the client.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"aditig0305"},"content":"* 2a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"aditig0305"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"aditig0305"},"content":"* 2b. Duplicate Client","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"aditig0305"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"aditig0305"},"content":"**Use case: Delete client data**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"aditig0305"},"content":"1. User requests to list clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"aditig0305"},"content":"2. AddressBook shows a list of clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"aditig0305"},"content":"3. User requests to delete a client’s data and inputs the required client details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"aditig0305"},"content":"4. AddressBook validates the input","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"aditig0305"},"content":"5. AddressBook deletes the person","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"aditig0305"},"content":"* 4a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"aditig0305"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"aditig0305"},"content":"* 4b. Duplicate Client","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"aditig0305"},"content":" * 4b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"aditig0305"},"content":"* 4c. Information mismatch","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"aditig0305"},"content":" * 4c1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"aditig0305"},"content":"**Use case: Record Client Payment**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"aditig0305"},"content":"1. User requests to list clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"aditig0305"},"content":"2. AddressBook shows a list of clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"aditig0305"},"content":"3. User requests to record a payment by providing the client’s name, phone number, and amount paid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"aditig0305"},"content":"4. AddressBook validates the input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"aditig0305"},"content":"5. AddressBook records the payment.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"aditig0305"},"content":"* 4a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"aditig0305"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"aditig0305"},"content":"* 4b. Name and Phone Number mismatch","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"aditig0305"},"content":" * 4b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"aditig0305"},"content":"**Use case: Tag a client’s priority**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"aditig0305"},"content":"1. User requests to list clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"aditig0305"},"content":"2. AddressBook shows a list of clients","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"aditig0305"},"content":"3. User requests to tag a specific person and specifies their name, number and the tag.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"aditig0305"},"content":"4. AddressBook validates the input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"aditig0305"},"content":"5. AddressBook tags the client\u0027s priority.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"aditig0305"},"content":"* 4a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"aditig0305"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"aditig0305"},"content":"* 4b. Name and Phone Number mismatch","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"aditig0305"},"content":" * 4b1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"aditig0305"},"content":"**Use case: Show schedule for the day**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"aditig0305"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"aditig0305"},"content":"1. User requests to see the schedule for the day and inputs the date.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"aditig0305"},"content":"2. AddressBook validates the input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"aditig0305"},"content":"3. AddressBook shows the schedule for the day.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"aditig0305"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"aditig0305"},"content":"* 2a. Invalid Input Format","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"aditig0305"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"aditig0305"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"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","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"Sornsornah"},"content":"4. The system should respond within 5 seconds for any commands given.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"Sornsornah"},"content":"5. Command syntax should be consistent throughout the application to minimize the learning curve.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"Sornsornah"},"content":"6. Users should be able to run the application from the downloaded JAR file without an additional installer.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"Sornsornah"},"content":"7. The system should provide meaningful, yet concise error messages for the user to easily make the necessary changes.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"Sornsornah"},"content":"8. The codebase should be modular to facilitate easy maintenance and future enhancements.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"Sornsornah"},"content":"9. The code should be well-documented with clear comments to assist future developers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"Sornsornah"},"content":"10. The application should have a smooth user experience that is intuitive and easy to use.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"Sornsornah"},"content":"11. The system should be customised for operations by a single user and need not handle multiple user-access.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"Sornsornah"},"content":"12. Configuration and data files should use standard formats to ensure compatibility with text editors and other applications.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"Sornsornah"},"content":"13. The system should validate all user inputs to prevent errors when saving the information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"Sornsornah"},"content":"* **Patient Record**: A collection of patient\u0027s personal and medical information. This includes, but is not limited to, name, contact number, email, address, allergies, injuries sustained.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"Sornsornah"},"content":"* **Appointment**: A scheduled session between the healthcare provider and patient for medical consultation or treatment. This is marked in the AddressBook by the time, location and patient.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"Sornsornah"},"content":"* **Schedule**: A list of all patients\u0027 appointments, displaying the date and time and location of the appointments.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"Sornsornah"},"content":"* **Tag**: A label applied to a patient record, used to categorise and highlight specific medical information, such as allergies or conditions.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"Sornsornah"},"content":"* **Medical History**: Documentation of patient\u0027s past illnesses, treatments, surgeries and other medical related information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"Sornsornah"},"content":"* **Inactive Client**: A client who is no longer receiving care or whose records have not been accessed in a significant amount of time","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"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","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"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","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"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","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":507,"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","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":512,"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","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"aditig0305":105,"Sornsornah":52,"-":358,"nayanaamahesh":8}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nayanaamahesh"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS t/TAG…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"nayanaamahesh"},"content":"A patient must have one tag (no more no less)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"nayanaamahesh"},"content":"The tag must be one of the following","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nayanaamahesh"},"content":"1. High Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"nayanaamahesh"},"content":"2. Medium Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"nayanaamahesh"},"content":"3. Low Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nayanaamahesh"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/ High Risk`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":"* `add n/Betsy-Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/Low Risk`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"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","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"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","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"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","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"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","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":188,"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","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"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","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"-":195,"nayanaamahesh":8}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"samriddh2145"},"content":"title: \"HealthConnect\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"samriddh2145"},"content":"repository: \"AY2425S1-CS2103T-T11-4/tp\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"samriddh2145":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"samriddh2145"},"content":" content: \"HealthConnect\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"samriddh2145":1,"-":293}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" .append(\"; Tag: \")","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" .append(person.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":49,"nayanaamahesh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" + PREFIX_TAG + \"TAG\\n\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" + PREFIX_TAG + \"Low Risk\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":81,"nayanaamahesh":2}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nayanaamahesh"},"content":" Tag updatedTags \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"nayanaamahesh"},"content":" private Tag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"nayanaamahesh"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"nayanaamahesh"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"nayanaamahesh"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"nayanaamahesh"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"nayanaamahesh"},"content":" return (tag !\u003d null) ? Optional.of(tag) : Optional.empty();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"nayanaamahesh"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"nayanaamahesh"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"-":228,"nayanaamahesh":11}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"samriddh2145"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"samriddh2145"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"samriddh2145":2,"-":22}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" Person person \u003d new Person(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":57,"nayanaamahesh":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"samriddh2145"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"samriddh2145"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"samriddh2145"},"content":" return new ViewCommand();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":83}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":63,"nayanaamahesh":4}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"nayanaamahesh"},"content":" \"Names should only contain alphanumeric characters, spaces, and hyphens, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"nayanaamahesh"},"content":" //accepts only alphanumeric characters, spaces, and hyphens","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-zA-Z0-9][a-zA-Z0-9\\\\s-]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" return fullName.equalsIgnoreCase(otherName.fullName);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":63,"nayanaamahesh":4}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":" private final Tag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" public Person(Name name, Phone phone, Email email, Address address, Tag tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" requireAllNonNull(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" public Tag getTag() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" return tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nayanaamahesh"},"content":" \u0026\u0026 (otherPerson.getName().equals(getName()) \u0026\u0026 otherPerson.getPhone().equals(getPhone()));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"nayanaamahesh"},"content":" \u0026\u0026 tag.equals(otherPerson.tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nayanaamahesh"},"content":" return Objects.hash(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":104,"nayanaamahesh":10}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Sornsornah"},"content":" \"Invalid Singapore phone number input. \"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Sornsornah"},"content":" + \"Enter a valid phone number that is 8 digits long and starts with 3, 6, 8 or 9.\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Sornsornah"},"content":" public static final String VALIDATION_REGEX \u003d \"[3689]\\\\d{7}\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"aditig0305"},"content":" String trimmedPhone \u003d phone.replaceAll(\" \", \"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"aditig0305"},"content":" checkArgument(isValidPhone(trimmedPhone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"aditig0305"},"content":" value \u003d trimmedPhone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"aditig0305":6,"Sornsornah":3,"-":57}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags should be High Risk, Medium Risk or Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALIDATION_REGEX \u003d \"High Risk|Medium Risk|Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"nayanaamahesh"},"content":" public static final String MESSAGE_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s Tag field is missing!\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"nayanaamahesh"},"content":" tagName \u003d tagName.strip();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" return tagName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":57,"nayanaamahesh":5}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"High Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"High Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Medium Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\")),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\"))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":40,"nayanaamahesh":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":" private final JsonAdaptedTag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nayanaamahesh"},"content":" @JsonProperty(\"tags\") JsonAdaptedTag tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" tag \u003d new JsonAdaptedTag(source.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" Tag personTag \u003d null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"nayanaamahesh"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nayanaamahesh"},"content":" throw new IllegalValueException(Tag.MESSAGE_FIELD_MESSAGE_FORMAT);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"nayanaamahesh"},"content":" personTag \u003d tag.toModelType();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nayanaamahesh"},"content":" final Tag finalPersonTag \u003d personTag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nayanaamahesh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, finalPersonTag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":88,"nayanaamahesh":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":" tags.getChildren().add(new Label(person.getTag().tagName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":54,"nayanaamahesh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"samriddh2145"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"samriddh2145"},"content":" String listCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"samriddh2145"},"content":" assertCommandSuccess(listCommand, ViewCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"nayanaamahesh"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"nayanaamahesh"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":170,"nayanaamahesh":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Sornsornah"},"content":" System.out.println(expected);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Sornsornah"},"content":" System.out.println(addCommand.toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob-Choo\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Sornsornah"},"content":" public static final String VALID_PHONE_AMY \u003d \"99999999\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Sornsornah"},"content":" public static final String VALID_PHONE_BOB \u003d \"88888888\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_TAG_HIGH_RISK \u003d \"High Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_TAG_MEDIUM_RISK \u003d \"Medium Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" public static final String VALID_TAG_LOW_RISK \u003d \"Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" public static final String TAG_DESC_LOW_RISK \u003d \" \" + PREFIX_TAG + VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"nayanaamahesh"},"content":" public static final String TAG_DESC_HIGH_RISK \u003d \" \" + PREFIX_TAG + VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" // The only tags allowed are High Risk, Low Risk, Medium Risk","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":118,"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","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":118,"nayanaamahesh":11}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"-":181,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"nayanaamahesh"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tag\u003d\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"nayanaamahesh"},"content":" + editPersonDescriptor.getTag().orElse(null) + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":67,"nayanaamahesh":4}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"samriddh2145"},"content":"class ViewCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"samriddh2145"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"samriddh2145"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":36}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"nayanaamahesh"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTag(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_LOW_RISK, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"nayanaamahesh"},"content":" // missing tag prefix","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_HIGH_RISK, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_HIGH_RISK, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"nayanaamahesh"},"content":" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"nayanaamahesh"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HIGH_RISK,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":164,"nayanaamahesh":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"samriddh2145"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"samriddh2145"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"samriddh2145"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"samriddh2145":3,"-":98}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_nullArgs_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HIGH_RISK","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nayanaamahesh"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"nayanaamahesh"},"content":" // tag","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"nayanaamahesh"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"nayanaamahesh"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_multipleTags_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"nayanaamahesh"},"content":" // Multiple tags provided","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"nayanaamahesh"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"nayanaamahesh"},"content":" String userInput \u003d \"edit \" + targetIndex.getOneBased() + TAG_DESC_HIGH_RISK + TAG_DESC_LOW_RISK;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"nayanaamahesh"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, userInput, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_emptyTags_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"nayanaamahesh"},"content":" // Attempt to edit a person without providing a tag","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"nayanaamahesh"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"nayanaamahesh"},"content":" String userInput \u003d \"edit \" + targetIndex.getOneBased() + PREFIX_TAG; // Only name is edited","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"nayanaamahesh"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"nayanaamahesh"},"content":" assertParseFailure(parser, userInput, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"nayanaamahesh"},"content":" public void parse_validTagCases_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"nayanaamahesh"},"content":" // Tags with correct casing","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"nayanaamahesh"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"nayanaamahesh"},"content":" String userInputHigh \u003d targetIndex.getOneBased() + \" \" + PREFIX_TAG + \"High Risk\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"nayanaamahesh"},"content":" EditPersonDescriptor descriptorHigh \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"nayanaamahesh"},"content":" EditCommand expectedCommandHigh \u003d new EditCommand(targetIndex, descriptorHigh);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"nayanaamahesh"},"content":" assertParseSuccess(parser, userInputHigh, expectedCommandHigh);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"nayanaamahesh"},"content":" String userInputMedium \u003d targetIndex.getOneBased() + \" \" + PREFIX_TAG + \"Medium Risk\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"nayanaamahesh"},"content":" EditPersonDescriptor descriptorMedium \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(\"Medium Risk\").build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"nayanaamahesh"},"content":" EditCommand expectedCommandMedium \u003d new EditCommand(targetIndex, descriptorMedium);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"nayanaamahesh"},"content":" assertParseSuccess(parser, userInputMedium, expectedCommandMedium);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"nayanaamahesh"},"content":" String userInputLow \u003d targetIndex.getOneBased() + \" \" + PREFIX_TAG + \"Low Risk\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"nayanaamahesh"},"content":" EditPersonDescriptor descriptorLow \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"nayanaamahesh"},"content":" .withTags(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"nayanaamahesh"},"content":" EditCommand expectedCommandLow \u003d new EditCommand(targetIndex, descriptorLow);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"nayanaamahesh"},"content":" assertParseSuccess(parser, userInputLow, expectedCommandLow);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"nayanaamahesh"},"content":" + TAG_DESC_LOW_RISK + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_LOW_RISK","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"nayanaamahesh"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"-":179,"nayanaamahesh":62}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Sornsornah"},"content":" private static final String VALID_PHONE \u003d \"98765432\";","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" private static final String VALID_TAG_1 \u003d \"High Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" private static final String VALID_TAG_2 \u003d \"Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"Sornsornah":1,"-":164,"nayanaamahesh":2}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"-":105,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Sornsornah"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"98765432\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Sornsornah"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":83}},{"path":"src/test/java/seedu/address/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Name.isValidName(\"Amelia-Leigh\")); // with hyphen and alphabets only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Name.isValidName(\"1234-452\")); // with hyphen and numbers only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Name.isValidName(\"Amelia-Leigh the 2nd\")); // with hyphen and alphanumeric characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":" //same name different capitalization -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(name.equals(new Name(\"valid name\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"-":60,"nayanaamahesh":6}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nayanaamahesh"},"content":" .withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nayanaamahesh"},"content":" // different name, phone number same -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" //different people -\u003e returns false","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(ALICE.isSamePerson(BOB));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" //same name, same phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(VALID_TAG_HIGH_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nayanaamahesh"},"content":" public void hashCode_samePerson_sameHashCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"nayanaamahesh"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"nayanaamahesh"},"content":" public void hashCode_differentPersons_differentHashCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d BOB.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nayanaamahesh"},"content":" public void constructor_allFieldsPresent_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nayanaamahesh"},"content":" Person person \u003d new PersonBuilder().withName(\"Charlie\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Sornsornah"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"charlie@example.com\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nayanaamahesh"},"content":" .withAddress(\"123, Charlies Street\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(\"Medium Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"Charlie\", person.getName().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Sornsornah"},"content":" assertEquals(\"98765432\", person.getPhone().toString());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"charlie@example.com\", person.getEmail().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"123, Charlies Street\", person.getAddress().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"Medium Risk\", person.getTag().toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"nayanaamahesh"},"content":" public void getters_allFieldsCorrectlyRetrieved() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getName(), ALICE.getName());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getPhone(), ALICE.getPhone());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getEmail(), ALICE.getEmail());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getAddress(), ALICE.getAddress());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(ALICE.getTag(), ALICE.getTag());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"nayanaamahesh"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tag\u003d\" + ALICE.getTag() + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Sornsornah":2,"-":83,"nayanaamahesh":52}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"aditig0305"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"aditig0305"},"content":" public void constructor_validPhone_withSpaces() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"aditig0305"},"content":" Phone longPhoneWithSpaces \u003d new Phone(\" 93121534 \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"aditig0305"},"content":" assertTrue(longPhoneWithSpaces.equals(new Phone(\"93121534\"))); // Should equal the trimmed version","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"aditig0305"},"content":" Phone mixedSpaces2 \u003d new Phone(\" 98 76 54 32 \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"aditig0305"},"content":" assertTrue(mixedSpaces2.equals(new Phone(\"98765432\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"aditig0305"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"aditig0305"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Sornsornah"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 8 numbers","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Sornsornah"},"content":" assertFalse(Phone.isValidPhone(\"124293842033123\")); // more than 8 digits","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"93121534\")); //phone number starts with 9","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"83121534\")); //phone number starts with 8","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"63121534\")); //phone number starts with 6","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Sornsornah"},"content":" assertTrue(Phone.isValidPhone(\"33121534\")); //phone number starts with 3","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Sornsornah"},"content":" Phone phone \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Sornsornah"},"content":" assertTrue(phone.equals(new Phone(\"98765432\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Sornsornah"},"content":" assertFalse(phone.equals(new Phone(\"97654321\")));","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"aditig0305":10,"Sornsornah":9,"-":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"nayanaamahesh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":172,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"nayanaamahesh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"nayanaamahesh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"nayanaamahesh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"nayanaamahesh"},"content":" public void constructor_validTagName_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"nayanaamahesh"},"content":" // Valid tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Medium Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"nayanaamahesh"},"content":" new Tag(\"Low Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" // invalid tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(Tag.isValidTagName(\"\")); // empty string","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(Tag.isValidTagName(\"High\")); // partial match","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(Tag.isValidTagName(\"high risk\")); // lowercase","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nayanaamahesh"},"content":" // valid tag names","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Tag.isValidTagName(\"High Risk\"));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Tag.isValidTagName(\"Medium Risk\"));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(Tag.isValidTagName(\"Low Risk\"));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" public void equals() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag1 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag2 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag3 \u003d new Tag(\"Low Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"nayanaamahesh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(tag1.equals(tag1));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" assertTrue(tag1.equals(tag2));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"nayanaamahesh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(tag1.equals(tag3));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"nayanaamahesh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(tag1.equals(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"nayanaamahesh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"nayanaamahesh"},"content":" assertFalse(tag1.equals(5)); // comparing with integer","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"nayanaamahesh"},"content":" public void hashCode_sameTagName_sameHashCode() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag1 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag2 \u003d new Tag(\"High Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(tag1.hashCode(), tag2.hashCode());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nayanaamahesh"},"content":" public void toString_validTagName_correctString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nayanaamahesh"},"content":" Tag tag \u003d new Tag(\"Medium Risk\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"nayanaamahesh"},"content":" assertEquals(\"Medium Risk\", tag.toString());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04","isFullCredit":false}],"authorContributionMap":{"-":26,"nayanaamahesh":55}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"nayanaamahesh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nayanaamahesh"},"content":" private static final JsonAdaptedTag VALID_TAG \u003d new JsonAdaptedTag(BENSON.getTag().toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedTag invalidTag \u003d new JsonAdaptedTag(INVALID_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nayanaamahesh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nayanaamahesh"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nayanaamahesh"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nayanaamahesh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nayanaamahesh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nayanaamahesh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"nayanaamahesh"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":92,"nayanaamahesh":19}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nayanaamahesh"},"content":" public EditPersonDescriptorBuilder withTags(String tag) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nayanaamahesh"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":79,"nayanaamahesh":3}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"nayanaamahesh"},"content":" public static final String DEFAULT_TAG \u003d \"Low Risk\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"nayanaamahesh"},"content":" private Tag tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"nayanaamahesh"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"nayanaamahesh"},"content":" public PersonBuilder withTag(String tag) {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"nayanaamahesh"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nayanaamahesh"},"content":" return new Person(name, phone, email, address, tag);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":86,"nayanaamahesh":7}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nayanaamahesh"},"content":" sb.append(PREFIX_TAG + person.getTag().tagName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"nayanaamahesh"},"content":" descriptor.getTag().ifPresent(tag -\u003e sb.append(PREFIX_TAG).append(tag.tagName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":48,"nayanaamahesh":3}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HIGH_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"nayanaamahesh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_LOW_RISK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nayanaamahesh"},"content":" .withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"aditig0305"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"94822242\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"aditig0305"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"94824272\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"aditig0305"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"94824422\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withTag(\"Low Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"aditig0305"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"84824242\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"aditig0305"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"84821312\")","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withTag(\"High Risk\").build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTag(VALID_TAG_LOW_RISK).build();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"nayanaamahesh"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTag(VALID_TAG_HIGH_RISK)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"aditig0305":5,"-":59,"nayanaamahesh":12}}] diff --git a/AY2425S1-CS2103T-T11-4_tp_master/commits.json b/AY2425S1-CS2103T-T11-4_tp_master/commits.json index 2a33f271..cac466f5 100644 --- a/AY2425S1-CS2103T-T11-4_tp_master/commits.json +++ b/AY2425S1-CS2103T-T11-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"samriddh2145":[{"date":"2024-09-30","commitResults":[{"hash":"54c93f5bd7848db0fc00f0c77a54f7984e814b39","isMergeCommit":false,"messageTitle":"Update AboutUs with Samriddh\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"84cc880375c36f5424715f08336cbd1ce56972a0","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"39572c5a221c98d9236797432e2e60e63bd272b5","isMergeCommit":true,"messageTitle":"Merge pull request #33 from Nihirraa/Update_README","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"3e4c39b4096fed196f284474820ed9fa74bf3942","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Nihirraa/Update_README","messageBody":"Update GitHub Actions build status badge to reflect team repo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"8abdc0e6ea72db653073e349fce0d86ea4d9a8f8","isMergeCommit":false,"messageTitle":"Refactor list command to view command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":9,"deletions":9}}},{"hash":"3f51818f459d534595e26279b63a4cb7b5a560e3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Nihirraa/implement_deletion","messageBody":"Add delete string","fileTypesAndContributionMap":{}}]}],"aditig0305":[{"date":"2024-09-30","commitResults":[{"hash":"188afc565c9cc288c1e0da63e03bf1df483c1160","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"0fb7d31cc98cb8b3ba3fb72e02ca98550538f103","isMergeCommit":true,"messageTitle":"Merge pull request #17 from nayanaamahesh/update-AboutUs-page","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5ff93e0c64eca3ffe679a320cebd69877256c5fb","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":9}}},{"hash":"648947a659958f196a56dffa9c3050b6551c4cd4","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":16}}}]},{"date":"2024-10-03","commitResults":[{"hash":"4c1771a2f61691de011dc6bb8513e3a63a8b1a6b","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Sornsornah/update-dg","messageBody":"Update DeveloperGuide with user stories, NFRs and glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"a8d2a763dfac4d586713ca46262005bb170dda40","isMergeCommit":false,"messageTitle":"Add spaces phone validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"bea49f621dc7537d056900fa581d933099f9eac3","isMergeCommit":false,"messageTitle":"Add phone test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":17,"deletions":0}}},{"hash":"68a1f07dd0a6ec7bf192c2555e5317cc8ea752d5","isMergeCommit":false,"messageTitle":"Edit constructor name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-14","commitResults":[{"hash":"15e0f8209e60b47884d6d0b950c4e4ec691518e5","isMergeCommit":false,"messageTitle":"Edit user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"6ed293a82adcc89341309233c29ba8ecfc6892cc","isMergeCommit":false,"messageTitle":"Edit typical persons","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"acf7f7908c4f2e5bff2d3522fa2079f5f18cf803","isMergeCommit":false,"messageTitle":"Edit manually added persons","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-16","commitResults":[{"hash":"189b69202b61d9784f0e3a41265c6e324a26947d","isMergeCommit":false,"messageTitle":"Edit value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"Nihirraa":[{"date":"2024-09-30","commitResults":[{"hash":"d694b650735a9deed6bc7bee8c8ba2b2fe35e692","isMergeCommit":false,"messageTitle":"Add Nihirra\u0027s information on AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"5fba6601eb6aee3a1ac275c90cf6e41f321e9209","isMergeCommit":true,"messageTitle":"Merge pull request #32 from samriddh2145/update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"36477d51a9c63a71ba3b44bbea931bb258b93bc7","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}}]},{"date":"2024-10-03","commitResults":[{"hash":"9f191f2c107a24434215e84e08fd42353a79763f","isMergeCommit":false,"messageTitle":"Update GitHub Actions build status badge to reflect team repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"3d4c29afa3d8916bae9effca061498dcde18eaeb","isMergeCommit":false,"messageTitle":"Add delete string","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f5d3b82af6ae3d6390d1c07e50b8db153c4b3653","isMergeCommit":true,"messageTitle":"Merge pull request #53 from samriddh2145/implement-view","messageBody":"Refactor list command to view command","fileTypesAndContributionMap":{}}]}],"Sornsornah":[{"date":"2024-09-30","commitResults":[{"hash":"05b075e0e0ee73b2050c1006c633c0f89f7df081","isMergeCommit":false,"messageTitle":"Update AboutUs description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"bcd0071a84dcfee800fc37599f11d67f9bca653b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from nayanaamahesh/update-DG","messageBody":"Update dg","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"300a9fe790fc6b5794f4b727d531241abfca08c5","isMergeCommit":false,"messageTitle":"Update DeveloperGuide with user stories, NFRs and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":19}}},{"hash":"44d2188351186d57e8b67a43be2c0b4b3ef01c8e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide with user stories, NFRs and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9dfb47fb078916f79c5bda1eb04518dccd288225","isMergeCommit":true,"messageTitle":"Merge pull request #44 from aditig0305/add-validation-aditi","messageBody":"Add spaces phone validation","fileTypesAndContributionMap":{}},{"hash":"5b43540d20527d0e41ef7308ac8b4dfedfdc8f58","isMergeCommit":true,"messageTitle":"Merge pull request #47 from nayanaamahesh/update-name-validation-for-add-feature","messageBody":"Update name validation for add feature","fileTypesAndContributionMap":{}},{"hash":"4f208ced9b75078bc731fee4e6bd3cdeb4f358b2","isMergeCommit":false,"messageTitle":"Change input message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"823e7122e3898322db34cc2380249f5fbdbca2c6","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Sornsornah/add-validation-four","messageBody":"Change input message","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"53b2bb8eebc17dfee7c4aaa7ca1efed461c46342","isMergeCommit":true,"messageTitle":"Merge pull request #59 from aditig0305/add-validation-aditi","messageBody":"Update storage test cases","fileTypesAndContributionMap":{}},{"hash":"73548152299ddaed4f7780ce5af662ceca0f9301","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into validate-inputs-for-add-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8453aeabac694fd650e96deec4e3994a9405e7ad","isMergeCommit":true,"messageTitle":"Merge pull request #61 from nayanaamahesh/validate-inputs-for-add-feature-resolve-merge-conflict","messageBody":"Validate inputs for add feature resolve merge conflict","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"d766e3df7210344cf068edc8f8673cf0ccfd1fe1","isMergeCommit":false,"messageTitle":"Change phone validation to Singapore phone numbers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":15}}},{"hash":"fd0d0762756648d0a1b173728daeca3fd5e7b409","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":7}}},{"hash":"3dfca97a9fc12a84b206d48b4eadeca702105f23","isMergeCommit":true,"messageTitle":"Merge pull request #58 from aditig0305/update-developer-guide","messageBody":"Edit user profile","fileTypesAndContributionMap":{}},{"hash":"5533220d86f0e695adb2db97d319cbde75f2ba80","isMergeCommit":true,"messageTitle":"Merge pull request #65 from nayanaamahesh/update-duplicate-person-logic","messageBody":"Update duplicate person logic","fileTypesAndContributionMap":{}}]}],"nayanaamahesh":[{"date":"2024-09-21","commitResults":[{"hash":"b6576b80d97cf598ecce687d57092c0b38814f00","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-30","commitResults":[{"hash":"243f9b7d245aa7ed776e7dea0e857359d25f94fd","isMergeCommit":false,"messageTitle":"Update Nayana\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"1b3cba514f8344875e25417b0028f912947d034b","isMergeCommit":false,"messageTitle":"Update link for Nayana\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14a8df8a8ffe7cd1183d68782311eea3381e6991","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Sornsornah/update-jason-aboutus","messageBody":"Update Jason\u0027s description in AboutUs page","fileTypesAndContributionMap":{}},{"hash":"bebfb8c01e21c21901168456a52bcd638e390c05","isMergeCommit":true,"messageTitle":"Merge pull request #19 from aditig0305/add-aditi-aboutus","messageBody":"Add aditi aboutus","fileTypesAndContributionMap":{}},{"hash":"30b936680059bf126905ae8a9577337283fc1feb","isMergeCommit":true,"messageTitle":"Merge pull request #20 from Nihirraa/update-AboutUs-page","messageBody":"Add Nihirra\u0027s information on AboutUs","fileTypesAndContributionMap":{}},{"hash":"e158f0edf3e7963db85cabcd45c9217966455c51","isMergeCommit":true,"messageTitle":"Merge pull request #21 from samriddh2145/update-aboutuspage","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"850451a429ed3cac5e3c4c98f061da722c70083a","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2425S1-CS2103T-T11-4/master","messageBody":"Add everyone\u0027s AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"b936ee327012d984069337bf7115036d9726911f","isMergeCommit":false,"messageTitle":"Product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":6}}},{"hash":"fa8cd1187b1ad861643113dfc26d58e8839db630","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T11-4/master","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"380afc5c43d43203474c2576c445a1cdc2307520","isMergeCommit":true,"messageTitle":"Merge pull request #31 from aditig0305/update-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"dce93f8ca070d0b1c1d0efc10fbb1522f2c93790","isMergeCommit":false,"messageTitle":"Update validation regex to allow hyphens in Name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"deeeb7e470c5e7ab02ded71bb727656d0959fdef","isMergeCommit":false,"messageTitle":"Add test cases for updated Name validation regex","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"3da45cfcf745db0f4e77b16da8779d02bb140630","isMergeCommit":false,"messageTitle":"Update user guide to reflect Name validation changes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"29daf5529046d150fcc02d86f288a070c240cd1d","isMergeCommit":false,"messageTitle":"Update Tag to only allow one tag","messageBody":"Each patient in the address book only has one tag.\nThis tag can only be one of the following:\n1. Low Risk\n2. Medium Risk\n3. High Risk\n","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":69},"test-code":{"insertions":12,"deletions":11}}},{"hash":"4ce1ff1d47d161654e105f57c16774aff480a2d4","isMergeCommit":false,"messageTitle":"Update tests for new tag requirements.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":73,"deletions":201}}},{"hash":"4e3f17b3993d11109d07ddebc46d7749cbb42191","isMergeCommit":false,"messageTitle":"Update Checkstyle configuration.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":18},"test-code":{"insertions":66,"deletions":29}}},{"hash":"bb05066cb582f130980611e2028648892fe2977e","isMergeCommit":false,"messageTitle":"Update user guide to reflect changes to tag requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":4}}},{"hash":"1640d9aa5da8a164a72ff61a1050e53c5b94d116","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T11-4/master","messageBody":"PR from Week 8","fileTypesAndContributionMap":{}},{"hash":"133ae91baa1c59c82e1b34d07d2174fba0b239ca","isMergeCommit":false,"messageTitle":"Increase patch coverage for Codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":31}}}]},{"date":"2024-10-11","commitResults":[{"hash":"87d59616f7b9639600eea54c9d0e5ef1881e95ba","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T11-4/master","messageBody":"Pull Request Week 8","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"ddbc846f670bd0fdad6022bba70b32f3ef532dd5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into validate-inputs-for-add-feature","messageBody":"* master:\n Change input message\n Add delete string\n Refactor list command to view command\n Edit constructor name\n Add phone test cases\n Add spaces phone validation\n Update DeveloperGuide with user stories, NFRs and glossary\n Update DeveloperGuide with user stories, NFRs and glossary\n Update GitHub Actions build status badge to reflect team repo\n Update README.md\n Update site-wide settings\n Add use cases\n Update developer guide\n","fileTypesAndContributionMap":{}},{"hash":"0b79b9f286a165daf20bc966e594d2b41c97926c","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":118,"deletions":13}}},{"hash":"422b516b4a4a0bce0c67abcc6e8808f8d55c7227","isMergeCommit":false,"messageTitle":"Improve code coverage for Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}},{"hash":"e6a153c63e5ce9e1ac7fa95994872591a94d2715","isMergeCommit":false,"messageTitle":"Remove Tester Message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-15","commitResults":[{"hash":"eda17521f5bee872e5a04322a67b63d5979ba869","isMergeCommit":false,"messageTitle":"Update Add Command Parser so that tags are mandatory","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"34e3880567e0b51166b72f9c504af59003cfd391","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest accordingly","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":6}}},{"hash":"03209da586a27f2ec67181291802aeb01745cab6","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T11-4/master","messageBody":"PR Aditi Week 9","fileTypesAndContributionMap":{}},{"hash":"5303fdb0d393f13e200e561d313da34a7ca0b7bf","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"d52c8e4fe5939ce15cf689ae1f3415ecce2a4d66","isMergeCommit":false,"messageTitle":"Improve code coverage by adding test case for null tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-10-16","commitResults":[{"hash":"fa982148eb96eb558fe8f5ca1b051c9fbd7c430b","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T11-4/master","messageBody":"Week 9 Resolved Merge Conflict","fileTypesAndContributionMap":{}},{"hash":"06862e0c4e9cb6aabbf340aaf1466ad688a15cc4","isMergeCommit":false,"messageTitle":"Update person and name class for new duplicate logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"c804f22d6c7e771b1c771f38548b9949ea5225d4","isMergeCommit":false,"messageTitle":"Update test cases for new duplicate logic","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":25}}},{"hash":"66ecb3a6fce7f4d0248d56675d3f68925769cc0a","isMergeCommit":false,"messageTitle":"Update minor issues in code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c44cc04fa51090d5d78d5520c0f4bc23ce7abd2b","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Sornsornah/add-phone-validation","messageBody":"Add phone validation","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"samriddh2145":{"docs":3,"functional-code":5,"test-code":9,"other":3},"aditig0305":{"docs":111,"functional-code":6,"test-code":15},"Nihirraa":{"docs":22,"functional-code":0,"test-code":0},"Sornsornah":{"docs":57,"functional-code":2,"test-code":18},"nayanaamahesh":{"docs":20,"functional-code":59,"test-code":267}},"authorContributionVariance":{"samriddh2145":28.982162,"aditig0305":803.7234,"Nihirraa":32.76816,"Sornsornah":270.27438,"nayanaamahesh":12442.225},"authorDisplayNameMap":{"samriddh2145":"CS2103T-T11-4 AGAR..IDDH","aditig0305":"CS2103T-T11-4 ADIT..ANDE","Nihirraa":"CS2103T-T11-4 KAKK..IRRA","Sornsornah":"CS2103T-T11-4 JASO.. JIE","nayanaamahesh":"CS2103T-T11-4 NAYA..HESH"}} +{"authorDailyContributionsMap":{"samriddh2145":[{"date":"2024-09-30","commitResults":[{"hash":"54c93f5bd7848db0fc00f0c77a54f7984e814b39","isMergeCommit":false,"messageTitle":"Update AboutUs with Samriddh\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"84cc880375c36f5424715f08336cbd1ce56972a0","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"39572c5a221c98d9236797432e2e60e63bd272b5","isMergeCommit":true,"messageTitle":"Merge pull request #33 from Nihirraa/Update_README","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"3e4c39b4096fed196f284474820ed9fa74bf3942","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Nihirraa/Update_README","messageBody":"Update GitHub Actions build status badge to reflect team repo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"8abdc0e6ea72db653073e349fce0d86ea4d9a8f8","isMergeCommit":false,"messageTitle":"Refactor list command to view command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":9,"deletions":9}}},{"hash":"3f51818f459d534595e26279b63a4cb7b5a560e3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Nihirraa/implement_deletion","messageBody":"Add delete string","fileTypesAndContributionMap":{}}]}],"aditig0305":[{"date":"2024-09-30","commitResults":[{"hash":"188afc565c9cc288c1e0da63e03bf1df483c1160","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"0fb7d31cc98cb8b3ba3fb72e02ca98550538f103","isMergeCommit":true,"messageTitle":"Merge pull request #17 from nayanaamahesh/update-AboutUs-page","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5ff93e0c64eca3ffe679a320cebd69877256c5fb","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":9}}},{"hash":"648947a659958f196a56dffa9c3050b6551c4cd4","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":16}}}]},{"date":"2024-10-03","commitResults":[{"hash":"4c1771a2f61691de011dc6bb8513e3a63a8b1a6b","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Sornsornah/update-dg","messageBody":"Update DeveloperGuide with user stories, NFRs and glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"a8d2a763dfac4d586713ca46262005bb170dda40","isMergeCommit":false,"messageTitle":"Add spaces phone validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"bea49f621dc7537d056900fa581d933099f9eac3","isMergeCommit":false,"messageTitle":"Add phone test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":17,"deletions":0}}},{"hash":"68a1f07dd0a6ec7bf192c2555e5317cc8ea752d5","isMergeCommit":false,"messageTitle":"Edit constructor name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-14","commitResults":[{"hash":"15e0f8209e60b47884d6d0b950c4e4ec691518e5","isMergeCommit":false,"messageTitle":"Edit user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"6ed293a82adcc89341309233c29ba8ecfc6892cc","isMergeCommit":false,"messageTitle":"Edit typical persons","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"acf7f7908c4f2e5bff2d3522fa2079f5f18cf803","isMergeCommit":false,"messageTitle":"Edit manually added persons","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-16","commitResults":[{"hash":"189b69202b61d9784f0e3a41265c6e324a26947d","isMergeCommit":false,"messageTitle":"Edit value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-17","commitResults":[{"hash":"c4e0548a452f54b548373aa5ffcfe8f585b1a67c","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Sornsornah/update-phone-validation-message","messageBody":"Update phone validation message","fileTypesAndContributionMap":{}}]}],"Nihirraa":[{"date":"2024-09-30","commitResults":[{"hash":"d694b650735a9deed6bc7bee8c8ba2b2fe35e692","isMergeCommit":false,"messageTitle":"Add Nihirra\u0027s information on AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"5fba6601eb6aee3a1ac275c90cf6e41f321e9209","isMergeCommit":true,"messageTitle":"Merge pull request #32 from samriddh2145/update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"36477d51a9c63a71ba3b44bbea931bb258b93bc7","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}}]},{"date":"2024-10-03","commitResults":[{"hash":"9f191f2c107a24434215e84e08fd42353a79763f","isMergeCommit":false,"messageTitle":"Update GitHub Actions build status badge to reflect team repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"3d4c29afa3d8916bae9effca061498dcde18eaeb","isMergeCommit":false,"messageTitle":"Add delete string","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f5d3b82af6ae3d6390d1c07e50b8db153c4b3653","isMergeCommit":true,"messageTitle":"Merge pull request #53 from samriddh2145/implement-view","messageBody":"Refactor list command to view command","fileTypesAndContributionMap":{}}]}],"Sornsornah":[{"date":"2024-09-30","commitResults":[{"hash":"05b075e0e0ee73b2050c1006c633c0f89f7df081","isMergeCommit":false,"messageTitle":"Update AboutUs description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"bcd0071a84dcfee800fc37599f11d67f9bca653b","isMergeCommit":true,"messageTitle":"Merge pull request #24 from nayanaamahesh/update-DG","messageBody":"Update dg","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"300a9fe790fc6b5794f4b727d531241abfca08c5","isMergeCommit":false,"messageTitle":"Update DeveloperGuide with user stories, NFRs and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":19}}},{"hash":"44d2188351186d57e8b67a43be2c0b4b3ef01c8e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide with user stories, NFRs and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9dfb47fb078916f79c5bda1eb04518dccd288225","isMergeCommit":true,"messageTitle":"Merge pull request #44 from aditig0305/add-validation-aditi","messageBody":"Add spaces phone validation","fileTypesAndContributionMap":{}},{"hash":"5b43540d20527d0e41ef7308ac8b4dfedfdc8f58","isMergeCommit":true,"messageTitle":"Merge pull request #47 from nayanaamahesh/update-name-validation-for-add-feature","messageBody":"Update name validation for add feature","fileTypesAndContributionMap":{}},{"hash":"4f208ced9b75078bc731fee4e6bd3cdeb4f358b2","isMergeCommit":false,"messageTitle":"Change input message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"823e7122e3898322db34cc2380249f5fbdbca2c6","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Sornsornah/add-validation-four","messageBody":"Change input message","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"53b2bb8eebc17dfee7c4aaa7ca1efed461c46342","isMergeCommit":true,"messageTitle":"Merge pull request #59 from aditig0305/add-validation-aditi","messageBody":"Update storage test cases","fileTypesAndContributionMap":{}},{"hash":"73548152299ddaed4f7780ce5af662ceca0f9301","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into validate-inputs-for-add-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8453aeabac694fd650e96deec4e3994a9405e7ad","isMergeCommit":true,"messageTitle":"Merge pull request #61 from nayanaamahesh/validate-inputs-for-add-feature-resolve-merge-conflict","messageBody":"Validate inputs for add feature resolve merge conflict","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"d766e3df7210344cf068edc8f8673cf0ccfd1fe1","isMergeCommit":false,"messageTitle":"Change phone validation to Singapore phone numbers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":15}}},{"hash":"fd0d0762756648d0a1b173728daeca3fd5e7b409","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":7}}},{"hash":"3dfca97a9fc12a84b206d48b4eadeca702105f23","isMergeCommit":true,"messageTitle":"Merge pull request #58 from aditig0305/update-developer-guide","messageBody":"Edit user profile","fileTypesAndContributionMap":{}},{"hash":"5533220d86f0e695adb2db97d319cbde75f2ba80","isMergeCommit":true,"messageTitle":"Merge pull request #65 from nayanaamahesh/update-duplicate-person-logic","messageBody":"Update duplicate person logic","fileTypesAndContributionMap":{}},{"hash":"13d2e441b0eac576634125b2d19f6414977a5b37","isMergeCommit":false,"messageTitle":"Update phone validation message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"eae80b59f5b65caefb9639913698180d9cf41e1b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"0059cce6e2958392694aba2022f4b61e6467886e","isMergeCommit":false,"messageTitle":"Fix checkstyle on string","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"nayanaamahesh":[{"date":"2024-09-21","commitResults":[{"hash":"b6576b80d97cf598ecce687d57092c0b38814f00","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-30","commitResults":[{"hash":"243f9b7d245aa7ed776e7dea0e857359d25f94fd","isMergeCommit":false,"messageTitle":"Update Nayana\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"1b3cba514f8344875e25417b0028f912947d034b","isMergeCommit":false,"messageTitle":"Update link for Nayana\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14a8df8a8ffe7cd1183d68782311eea3381e6991","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Sornsornah/update-jason-aboutus","messageBody":"Update Jason\u0027s description in AboutUs page","fileTypesAndContributionMap":{}},{"hash":"bebfb8c01e21c21901168456a52bcd638e390c05","isMergeCommit":true,"messageTitle":"Merge pull request #19 from aditig0305/add-aditi-aboutus","messageBody":"Add aditi aboutus","fileTypesAndContributionMap":{}},{"hash":"30b936680059bf126905ae8a9577337283fc1feb","isMergeCommit":true,"messageTitle":"Merge pull request #20 from Nihirraa/update-AboutUs-page","messageBody":"Add Nihirra\u0027s information on AboutUs","fileTypesAndContributionMap":{}},{"hash":"e158f0edf3e7963db85cabcd45c9217966455c51","isMergeCommit":true,"messageTitle":"Merge pull request #21 from samriddh2145/update-aboutuspage","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"850451a429ed3cac5e3c4c98f061da722c70083a","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2425S1-CS2103T-T11-4/master","messageBody":"Add everyone\u0027s AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"b936ee327012d984069337bf7115036d9726911f","isMergeCommit":false,"messageTitle":"Product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":6}}},{"hash":"fa8cd1187b1ad861643113dfc26d58e8839db630","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T11-4/master","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"380afc5c43d43203474c2576c445a1cdc2307520","isMergeCommit":true,"messageTitle":"Merge pull request #31 from aditig0305/update-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"dce93f8ca070d0b1c1d0efc10fbb1522f2c93790","isMergeCommit":false,"messageTitle":"Update validation regex to allow hyphens in Name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"deeeb7e470c5e7ab02ded71bb727656d0959fdef","isMergeCommit":false,"messageTitle":"Add test cases for updated Name validation regex","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"3da45cfcf745db0f4e77b16da8779d02bb140630","isMergeCommit":false,"messageTitle":"Update user guide to reflect Name validation changes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"29daf5529046d150fcc02d86f288a070c240cd1d","isMergeCommit":false,"messageTitle":"Update Tag to only allow one tag","messageBody":"Each patient in the address book only has one tag.\nThis tag can only be one of the following:\n1. Low Risk\n2. Medium Risk\n3. High Risk\n","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":69},"test-code":{"insertions":12,"deletions":11}}},{"hash":"4ce1ff1d47d161654e105f57c16774aff480a2d4","isMergeCommit":false,"messageTitle":"Update tests for new tag requirements.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":73,"deletions":201}}},{"hash":"4e3f17b3993d11109d07ddebc46d7749cbb42191","isMergeCommit":false,"messageTitle":"Update Checkstyle configuration.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":18},"test-code":{"insertions":66,"deletions":29}}},{"hash":"bb05066cb582f130980611e2028648892fe2977e","isMergeCommit":false,"messageTitle":"Update user guide to reflect changes to tag requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":4}}},{"hash":"1640d9aa5da8a164a72ff61a1050e53c5b94d116","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T11-4/master","messageBody":"PR from Week 8","fileTypesAndContributionMap":{}},{"hash":"133ae91baa1c59c82e1b34d07d2174fba0b239ca","isMergeCommit":false,"messageTitle":"Increase patch coverage for Codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":31}}}]},{"date":"2024-10-11","commitResults":[{"hash":"87d59616f7b9639600eea54c9d0e5ef1881e95ba","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T11-4/master","messageBody":"Pull Request Week 8","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"ddbc846f670bd0fdad6022bba70b32f3ef532dd5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into validate-inputs-for-add-feature","messageBody":"* master:\n Change input message\n Add delete string\n Refactor list command to view command\n Edit constructor name\n Add phone test cases\n Add spaces phone validation\n Update DeveloperGuide with user stories, NFRs and glossary\n Update DeveloperGuide with user stories, NFRs and glossary\n Update GitHub Actions build status badge to reflect team repo\n Update README.md\n Update site-wide settings\n Add use cases\n Update developer guide\n","fileTypesAndContributionMap":{}},{"hash":"0b79b9f286a165daf20bc966e594d2b41c97926c","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":118,"deletions":13}}},{"hash":"422b516b4a4a0bce0c67abcc6e8808f8d55c7227","isMergeCommit":false,"messageTitle":"Improve code coverage for Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}},{"hash":"e6a153c63e5ce9e1ac7fa95994872591a94d2715","isMergeCommit":false,"messageTitle":"Remove Tester Message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-15","commitResults":[{"hash":"eda17521f5bee872e5a04322a67b63d5979ba869","isMergeCommit":false,"messageTitle":"Update Add Command Parser so that tags are mandatory","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"34e3880567e0b51166b72f9c504af59003cfd391","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest accordingly","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":6}}},{"hash":"03209da586a27f2ec67181291802aeb01745cab6","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T11-4/master","messageBody":"PR Aditi Week 9","fileTypesAndContributionMap":{}},{"hash":"5303fdb0d393f13e200e561d313da34a7ca0b7bf","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"d52c8e4fe5939ce15cf689ae1f3415ecce2a4d66","isMergeCommit":false,"messageTitle":"Improve code coverage by adding test case for null tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-10-16","commitResults":[{"hash":"fa982148eb96eb558fe8f5ca1b051c9fbd7c430b","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T11-4/master","messageBody":"Week 9 Resolved Merge Conflict","fileTypesAndContributionMap":{}},{"hash":"06862e0c4e9cb6aabbf340aaf1466ad688a15cc4","isMergeCommit":false,"messageTitle":"Update person and name class for new duplicate logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"c804f22d6c7e771b1c771f38548b9949ea5225d4","isMergeCommit":false,"messageTitle":"Update test cases for new duplicate logic","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":25}}},{"hash":"66ecb3a6fce7f4d0248d56675d3f68925769cc0a","isMergeCommit":false,"messageTitle":"Update minor issues in code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c44cc04fa51090d5d78d5520c0f4bc23ce7abd2b","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Sornsornah/add-phone-validation","messageBody":"Add phone validation","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"samriddh2145":{"docs":3,"functional-code":5,"test-code":9,"other":3},"aditig0305":{"docs":111,"functional-code":6,"test-code":15},"Nihirraa":{"docs":22,"functional-code":0,"test-code":0},"Sornsornah":{"docs":57,"functional-code":3,"test-code":18},"nayanaamahesh":{"docs":20,"functional-code":59,"test-code":267}},"authorContributionVariance":{"samriddh2145":28.015308,"aditig0305":777.00397,"Nihirraa":31.673477,"Sornsornah":288.2143,"nayanaamahesh":12036.12},"authorDisplayNameMap":{"samriddh2145":"CS2103T-T11-4 AGAR..IDDH","aditig0305":"CS2103T-T11-4 ADIT..ANDE","Nihirraa":"CS2103T-T11-4 KAKK..IRRA","Sornsornah":"CS2103T-T11-4 JASO.. JIE","nayanaamahesh":"CS2103T-T11-4 NAYA..HESH"}} diff --git a/AY2425S1-CS2103T-T14-3_tp_master/commits.json b/AY2425S1-CS2103T-T14-3_tp_master/commits.json index 3f58a85f..8e32c5a3 100644 --- a/AY2425S1-CS2103T-T14-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-T14-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Meowloid":[{"date":"2024-10-03","commitResults":[{"hash":"6d52b3afee8962444e90c36ac2b95d997cd56515","isMergeCommit":false,"messageTitle":"Update AboutUs.md for user Meowloid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"1da00884e61d06c169535f406d73507b47beef0a","isMergeCommit":true,"messageTitle":"Merge pull request #13 from SeanWong2/branch-addPhoto","messageBody":"Add Sean\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"7a753c190d5034deaa47b30d287f10b6b18f4199","isMergeCommit":false,"messageTitle":"Add user stories to DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":9}}},{"hash":"aef0f67731025c3b8d3c43bc879741aa8701c95e","isMergeCommit":true,"messageTitle":"Merge pull request #32 from SeanWong2/branch-addNFR","messageBody":"Add NFR","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"b81fe3c266ae6d3dc4a8d2bddb3d8b1b1a3712c9","isMergeCommit":false,"messageTitle":"Change priority of certain user story and add two new relevant ones","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"01f486500b147a5ad869eaec76059e337687a793","isMergeCommit":false,"messageTitle":"Arrange user stories in descending order","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-05","commitResults":[{"hash":"76285069684eeb580f111fea75e8f8f9bf5e1d7c","isMergeCommit":false,"messageTitle":" Add user profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":3}}}]},{"date":"2024-10-06","commitResults":[{"hash":"4aea7f891fdd2ebe400d441e7edf564472316329","isMergeCommit":false,"messageTitle":"Add new class ListClientCommand and hook successfully","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0}}},{"hash":"5d4d102d26e3456d5a379949278bfd8d000bb8f4","isMergeCommit":false,"messageTitle":"Add placeholder for 4 new values in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-10-07","commitResults":[{"hash":"3c37c313c8949bf58d5b1f498f29a38bf2597f41","isMergeCommit":false,"messageTitle":"Attempt to port VRN, VIN, make and model to frontend","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d266ccaaf8cf192531c8f178912c13e4de547d10","isMergeCommit":false,"messageTitle":"Fix minor spelling error and implement frontend for car details successfuly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":7}}},{"hash":"8c7c7929aa3b0018886ce21eb079ffebb78d4978","isMergeCommit":false,"messageTitle":"Add Messages.formatCar and frontend user feedback message for when a new client with car is added","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1}}},{"hash":"3b6fed120143570895f860fad892a733376f0dac","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"6ec44451abc39a11f061c6aebc80fc617f7e9c4e","isMergeCommit":false,"messageTitle":"Change AddCommandIntegrationTest to fit changes to AddCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"f6b95ad2b7f0d88fc7a96af9492a71f6c7caeefa","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-09","commitResults":[{"hash":"ea0e4cbdd95138b0b4049b74c46436611fc4f4f0","isMergeCommit":false,"messageTitle":"Refactor code block for when Person to be added has a car or not","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"d19daa349c1d852b7bd392ebc861fb95a7909d18","isMergeCommit":false,"messageTitle":"Remove previous javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7}}}]},{"date":"2024-10-13","commitResults":[{"hash":"aa1dbe5d5c58e2b6a28a32c6398578f93995729a","isMergeCommit":false,"messageTitle":"Hook AddCarCommand skeleton and change AddClientCommand MESSAGE_USAGE to fit new VRN","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":1}}},{"hash":"c3a82a34a74eabd7f920f1baf833552dedec7b16","isMergeCommit":false,"messageTitle":"Add proper implementation of AddCarCommand and AddCarCommandParser classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":4}}},{"hash":"e85bc71aecad4a11452fcba5e18187ecdac4e0d2","isMergeCommit":false,"messageTitle":"Add non null checks to AddCarCommand for proper testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":44,"deletions":0}}}]},{"date":"2024-10-15","commitResults":[{"hash":"7337ff6175f40190abee48425ad7be2a635b13b6","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":173,"deletions":8}}},{"hash":"36a257babecd56bd2be9ecc90b87e8a17deaa4a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027Week9-AddCar\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"382e95c27a430c7b4a9f9cbb2f2f38d7063b026d","isMergeCommit":false,"messageTitle":"Change getTags to getIssues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f0baa99f5ab5cd56c5e2ee0dc6837a4593dae96e","isMergeCommit":false,"messageTitle":"Move import order to pass stylechecks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":16}}},{"hash":"a5f89266514825260c6d10e5d6253b131d5339c4","isMergeCommit":false,"messageTitle":"Move import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"c90dacc9430d79c0dd1566a50f1a12cc224417af","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":4}}},{"hash":"7d1c09784da044248eb68cb457466071d904c78f","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f0beeeae824078be3eb22d663f67676560014782","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":0}}},{"hash":"dc02ab1bbb9a10a3c58602b8417cd2f7256e8998","isMergeCommit":false,"messageTitle":"Add AddCarCommandParser tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":7},"test-code":{"insertions":91,"deletions":0}}},{"hash":"d33577dcdf8da4f3b122dd0708c9dd5308480566","isMergeCommit":true,"messageTitle":"Merge branch \u0027Week9-AddCar\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eaeb6aac6a220b101e8771a41ca7525ed4ceca44","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":17}}}]}],"SeanWong2":[{"date":"2024-10-03","commitResults":[{"hash":"455e1a2cc866d0e3ef088a34de4f8253ffcf8ec8","isMergeCommit":false,"messageTitle":"Update Sean\u0027s AboutUs page details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"5e42f8f556a54a3dd19bf4cbbd436a319bc07655","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Meowloid/Week7","messageBody":"Add Tahir\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"d8b73e8aadb18ec2a5da30de51ccf55891b883a2","isMergeCommit":false,"messageTitle":"Add NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"6a01ea6f6ff5dde207eab36fbe28355a582ffd00","isMergeCommit":false,"messageTitle":"Update NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"8f0e24135c799c05b3692d3db57531c4fb5c50e0","isMergeCommit":true,"messageTitle":"Merge pull request #41 from xhamyo/branch-DG-UseCase-NEW","messageBody":"Create DG Use Case","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"31d5fe95969c7fcde9a38ed107c06a3b117f2634","isMergeCommit":true,"messageTitle":"Merge pull request #58 from calebyyy/edit-client-feature","messageBody":"Edit client feature","fileTypesAndContributionMap":{}},{"hash":"ac00d6e59610b8601811648f88094af18fab614d","isMergeCommit":false,"messageTitle":"Add view client details","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":268,"deletions":2}}},{"hash":"013f8bc058a29a272882c1e9e5b21c39fb3224e2","isMergeCommit":false,"messageTitle":"Add working view client","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":16}}}]},{"date":"2024-10-08","commitResults":[{"hash":"5e1e827328f32d8d63466259ff9debba99cc9310","isMergeCommit":false,"messageTitle":"FIx tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":3,"deletions":2}}},{"hash":"4b45298c7196af91f70a702dc4f5c0b46e3abcee","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0},"test-code":{"insertions":88,"deletions":0}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d6c11ff7ee7380a6b012d9e8284364caa608e34c","isMergeCommit":false,"messageTitle":"Add find vrn feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3},"test-code":{"insertions":14,"deletions":3}}}]},{"date":"2024-10-12","commitResults":[{"hash":"129057bf13580791513d4d6ce41aa02222e3c6e9","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"eea80ea53c6869ddfd76f4d53c2b37689c417ba3","isMergeCommit":true,"messageTitle":"Merge pull request #74 from limyuquan/remove-spacing-in-vrn","messageBody":"Update VRN to remove spacing","fileTypesAndContributionMap":{}},{"hash":"3eae84a310b30a8953bb8b8438a9993057220a03","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":3}}},{"hash":"fa60973bb2eb259484032df5fd7a201b82b5555f","isMergeCommit":false,"messageTitle":"Add find command parser tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"758efc1934c538757c4b7103f25074711939f10f","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}}]}],"calebyyy":[{"date":"2024-10-03","commitResults":[{"hash":"9b00b15ff6e285c4120c97297dc3b0f784a10ff9","isMergeCommit":false,"messageTitle":"Add about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-04","commitResults":[{"hash":"644995d2d66e34658f61fb748b1a849f68ce14eb","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Meowloid/Week7","messageBody":"Add user stories to DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"497f36db836e0893b30f521f1a2393c5074a7eab","isMergeCommit":false,"messageTitle":"Add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"e6958026d24c2e7ff4a6c6a4dfe02cc60b601616","isMergeCommit":true,"messageTitle":"Merge pull request #55 from limyuquan/add-client-feature","messageBody":"Add add-client feature with car support","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"9e8cca7b1ef56866f12794478a60a57e6a847231","isMergeCommit":false,"messageTitle":"Add edit-client feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":241,"deletions":13},"test-code":{"insertions":270,"deletions":269}}},{"hash":"cd40bbb49a65d128719abfb7a85f7415da5f8474","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":8},"test-code":{"insertions":437,"deletions":311}}}]},{"date":"2024-10-13","commitResults":[{"hash":"59d9e042d7d318288eee663502641e854501e0bc","isMergeCommit":false,"messageTitle":"Add exception handling for no car","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3fd7016af038405ff7641744e238706babd3961c","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":0}}},{"hash":"df5f3179db27d2b4afd6bcffdd6976296657b49d","isMergeCommit":false,"messageTitle":"Change all occurences of tag to issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":213},"test-code":{"insertions":224,"deletions":208}}}]}],"limyuquan":[{"date":"2024-10-03","commitResults":[{"hash":"9dbd7ca8911413af284eb05bdc50160d3caa24e1","isMergeCommit":false,"messageTitle":"Add About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f5a0890c2c739bea3dc37856707dc987d0670c38","isMergeCommit":true,"messageTitle":"Merge pull request #20 from xhamyo/branch-AboutUs","messageBody":"Update Han Yu\u0027s AboutUs page details","fileTypesAndContributionMap":{}},{"hash":"d2455bc79bcf55db4737caeb969013005f6fa835","isMergeCommit":true,"messageTitle":"Merge pull request #23 from calebyyy/Add-AboutUs","messageBody":"Add about us","fileTypesAndContributionMap":{}},{"hash":"8e470f5b70c5cb25b8daace382ca51b2a3549e9d","isMergeCommit":false,"messageTitle":"Update README and Site","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":12}}},{"hash":"951f614ac180848f41b8da7b6dc3120b2d5d4352","isMergeCommit":false,"messageTitle":"Update README and Site","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-04","commitResults":[{"hash":"cb61795cf9b9a9347de3bde10647aab48ab01f73","isMergeCommit":true,"messageTitle":"Merge pull request #45 from calebyyy/DG-glossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10fdf41c747deab6b01b31767fc413cf9de6333d","isMergeCommit":false,"messageTitle":"Update Website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}},{"hash":"7845374744db771f30d0bb88502762719311702c","isMergeCommit":false,"messageTitle":"Update readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0a31bbb6e32ab249f460358ce90aa390cbc6f774","isMergeCommit":true,"messageTitle":"Merge pull request #47 from limyuquan/update-website","messageBody":"Update Website","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"1f8ae38f84452738de2742d2666a3d552824bfea","isMergeCommit":true,"messageTitle":"Merge pull request #49 from xhamyo/branch-Car","messageBody":"Create Car Class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"e5689baad951c0ccb1abbfa36476a540dc548190","isMergeCommit":false,"messageTitle":"Add add-client feature with car support","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":338,"deletions":37},"other":{"insertions":27,"deletions":12},"test-code":{"insertions":460,"deletions":64}}},{"hash":"44a9edb00865a6ce4c97ca9a53bb8013687b562b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-client-feature","messageBody":"Merge from master to here\n","fileTypesAndContributionMap":{}},{"hash":"62aff42921f293b5c88850f39a227137296cbb1b","isMergeCommit":false,"messageTitle":"Fix whitespace CI issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":4,"deletions":4}}},{"hash":"e68ad5771fb1548abe13429561112b744e69fe41","isMergeCommit":false,"messageTitle":"Update with style and example fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":54,"deletions":54}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a6c9286e2ceeef36203a50e906d0ef41e52e5c5f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from SeanWong2/branch-addViewClient","messageBody":"Add View Client Feature","fileTypesAndContributionMap":{}},{"hash":"18f5638586483eda408f687055fbc86b4d1cd54f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Meowloid/Week8-Front-End-Fixes-and-listclient","messageBody":"Add frontend support for add-client","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"438e1de35b634100262028aed09d831477ec5db6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from xhamyo/branch-deleteClient","messageBody":"Add Client Feature (delete-client)","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"f44e2ea571907ed7aa935474e46a6be6a5d719e3","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":271,"deletions":107}}},{"hash":"2649df992d52f54340249456dd42d5ec784b136f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"beb6f49a5b6b34675cbd3452e8c5d3ebed450bb3","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a2f0a5355931f2e9ad7002b1dcffcc8414467a4a","isMergeCommit":true,"messageTitle":"Merge pull request #65 from limyuquan/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"d0732f5751e7964e423a09a8bec32467f47c90d8","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":17}}},{"hash":"8795375a0d58ea237063b97be3a2388816fcc735","isMergeCommit":true,"messageTitle":"Merge pull request #66 from limyuquan/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"3c1866b7c19523d67396cdabe74def465b1107b5","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":18}}},{"hash":"3e6c154eb3d93c59dd9b845e1f8968ed2822e5f9","isMergeCommit":true,"messageTitle":"Merge pull request #67 from limyuquan/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"ef840b4975ca4ef4d2981ed2fdf7bb5d7da1ec1f","isMergeCommit":false,"messageTitle":"Update user guide witth additional styling and Icons","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":69,"deletions":17}}},{"hash":"915d76f7ac71a43f1547b32dfe650730ddc2f490","isMergeCommit":true,"messageTitle":"Merge pull request #69 from limyuquan/update-user-guide","messageBody":"Update user guide witth additional styling and Icons","fileTypesAndContributionMap":{}},{"hash":"869ec6f66f0e8e11ca193f5daa85fda596ff7eed","isMergeCommit":true,"messageTitle":"Merge pull request #70 from xhamyo/branch-UpdateCommands","messageBody":" Update Command Class names and Command Words ","fileTypesAndContributionMap":{}},{"hash":"64812e2c6fef33245a734dce81aa16caac01e7bb","isMergeCommit":false,"messageTitle":"Update VRN to remove spacing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":13},"docs":{"insertions":11,"deletions":17},"test-code":{"insertions":54,"deletions":54}}},{"hash":"fd03fe061f54ef9c431ee15476d71299024cc6cd","isMergeCommit":true,"messageTitle":"Merge pull request #64 from SeanWong2/branch-addFindVrn","messageBody":"Add find vrn feature","fileTypesAndContributionMap":{}},{"hash":"6f9de698508763b99f86ffa5c923500e5cbd720b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from xhamyo/branch-UpdateGUI","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"3a4fd761582fd433283debc6f424f4079fae8743","isMergeCommit":true,"messageTitle":"Merge pull request #79 from calebyyy/edit-client-missing-car-bug","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"69ee721e06a4e04c768a8f915cbd0e82a9ba8af7","isMergeCommit":true,"messageTitle":"Merge pull request #80 from calebyyy/issues","messageBody":"Change all occurences of tag to issue","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"5d375f758a6827c3f1cc1dcd09c39e8d84e6a3b6","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Meowloid/Week9-AddCar","messageBody":"Add Car feature and tests and Update user guide","fileTypesAndContributionMap":{}}]}],"xhamyo":[{"date":"2024-10-03","commitResults":[{"hash":"a5a41768b6dc40b1fef2ff2e48ee3d20b0da8002","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"fa7cee85739aa284a764f72271f2c6ee734008ff","isMergeCommit":true,"messageTitle":"Merge pull request #17 from limyuquan/Add-AboutUs","messageBody":"Update Yu Quan\u0027s AboutUs page details","fileTypesAndContributionMap":{}},{"hash":"43f6d0fd30c7d172e59b9b3018901bb528cd9537","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/xhamyo/tp","messageBody":"* \u0027master\u0027 of https://github.com/xhamyo/tp:\n Add about us\n Update name of image\n Update Sean\u0027s AboutUs page details\n Update AboutUs.md for user Meowloid\n Add user Meowloid photo\n Add Sean\u0027s photo\n Remove Sean\u0027s photo\n Update AboutUs page\n Add About Us\n Add Sean\u0027s Photo\n","fileTypesAndContributionMap":{}},{"hash":"1aaf5bf9394340900eac7373cee1672bd2cde622","isMergeCommit":true,"messageTitle":"Merge pull request #31 from limyuquan/update-readme","messageBody":"Update README and Site","fileTypesAndContributionMap":{}},{"hash":"809578dbf6b5338434a9149d641fb3223b90747e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T14-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6e3d791970ef5ced99ba7b2d0082093c45747968","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/xhamyo/tp","messageBody":"* \u0027master\u0027 of https://github.com/xhamyo/tp:\n Update README and Site\n Update README and Site\n","fileTypesAndContributionMap":{}},{"hash":"d7c555d518ea39cec576a6918a30413336d54226","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T14-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36464f21edcb9f800c653383dd53061087f2dbb4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/xhamyo/tp","messageBody":"* \u0027master\u0027 of https://github.com/xhamyo/tp:\n Update NFR\n Add NFR\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"27a0ef69b2713ea3f724fe7054fbbd54854e7409","isMergeCommit":false,"messageTitle":"Create DG Use Case","messageBody":"Created DG Use Cases for Add Client, Delete Client,\nList Clients, Edit Client and View Client.\n\nUpdated README.\n","fileTypesAndContributionMap":{"docs":{"insertions":98,"deletions":12}}},{"hash":"218a26bee880cf710efffd73cacc84d9e599b95e","isMergeCommit":false,"messageTitle":"Add DG Use Case","messageBody":"Created DG Use Cases for Add Car, Delete Car,\nEdit Car, Add Issue, Delete Issue, Edit Issue.\n","fileTypesAndContributionMap":{"docs":{"insertions":198,"deletions":1}}},{"hash":"fc3c4d0bf89e55c40103ddd09aa6432e34ac506a","isMergeCommit":false,"messageTitle":"Update DG Use Case","messageBody":"Small changes to Use Cases.\n","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":45}}},{"hash":"8a9a59107fe6aa13e8e78109d4d1b2e86d6093ae","isMergeCommit":false,"messageTitle":"Update DG Use Case II","messageBody":"Capitalised nouns such as Client, Car, Issue.\n","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":64}}},{"hash":"2c612c7e987333194f92b0d8a2cd8972a5a9e3a2","isMergeCommit":false,"messageTitle":"Update DG Use Case III","messageBody":"Capitalised nouns such as Client, Car, Issue.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}}]},{"date":"2024-10-05","commitResults":[{"hash":"af531e2c5bdc849e3123ec92230d6696e0f3f8b3","isMergeCommit":false,"messageTitle":"Create Car Class","messageBody":"Added Car Class and Class for its fields.\n\nAdded Test Cases for Car Class and Class for its fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":418,"deletions":0},"test-code":{"insertions":370,"deletions":0}}},{"hash":"a7462cc69be246760383a3ebb0581eab09994e67","isMergeCommit":false,"messageTitle":"Fix Typo","messageBody":"Fixed typographical errors and string formatting.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"b830b8ee0b5d01ee273db018b18f289d41cf8bc0","isMergeCommit":false,"messageTitle":"Rename Make and Model","messageBody":"Renamed to CarMake and CarModel to avoid confusion with Model.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":18},"other":{"insertions":34,"deletions":34},"test-code":{"insertions":136,"deletions":136}}},{"hash":"8fc060036884bc713b44afbe0a62a2ec054fe813","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Meowloid/Week7","messageBody":"Add user profile and value proposition","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"b71b6f29aa79a39555ad38e1025dc04bc00e3bdc","isMergeCommit":false,"messageTitle":"Add delete-client Feature","messageBody":"Update command word from delete to delete-client.\n\nRefactor Delete to DeleteClient.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":41,"deletions":40},"test-code":{"insertions":6,"deletions":6}}}]},{"date":"2024-10-12","commitResults":[{"hash":"53540bee4a946f97d048a04e621547e964817c8e","isMergeCommit":false,"messageTitle":"Update AddClientCommand","messageBody":"Update AddCommand and its respective Parser and test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":11,"deletions":11},"test-code":{"insertions":3,"deletions":3}}},{"hash":"e8dcdd7a903d02ae6c7e9d8fa1fb65d29a0601a4","isMergeCommit":false,"messageTitle":"Update ViewClientCommand","messageBody":"Update ViewCommand and its respective Parser and test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":26},"other":{"insertions":20,"deletions":20}}},{"hash":"809b0759a1f22fe44edb3234c7eb59415c6000e0","isMergeCommit":false,"messageTitle":"Update EditClientCommand","messageBody":"Update EditCommand and its respective Parser and test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":63,"deletions":63},"test-code":{"insertions":11,"deletions":11}}},{"hash":"f7fc01451b7dd0764737fe08a20bb3d5f86dec85","isMergeCommit":false,"messageTitle":"Update ListClientCommand","messageBody":"Update ListCommand and its respective Parser and test cases.\n\nRemoved duplicate ListCommand class and Parser case.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":33},"other":{"insertions":4,"deletions":4},"test-code":{"insertions":6,"deletions":6}}},{"hash":"e0995cdd5fb95facb97dda60ef60a1d700ba73e6","isMergeCommit":false,"messageTitle":"Fix Code Style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5},"test-code":{"insertions":24,"deletions":13}}},{"hash":"dec79b5b77da656a691b7bbb7ffb49b80c760752","isMergeCommit":false,"messageTitle":"Fix Code Style II","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"be6adf2aa1c5992bcdabbff186f395a1f5ceb634","isMergeCommit":false,"messageTitle":"Update List GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":52}}},{"hash":"e3f9c52a651000fc5504fe689cc909d6e2ba7746","isMergeCommit":false,"messageTitle":"Update View GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":39}}},{"hash":"a6b2651dbd82511a6eda3084e4575588a1225046","isMergeCommit":false,"messageTitle":"View GUI Bug Fix","messageBody":"Fixed bug where Issues of other Clients get collected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"Meowloid":{"docs":67,"functional-code":212,"test-code":313},"SeanWong2":{"docs":12,"functional-code":252,"test-code":176},"calebyyy":{"docs":9,"functional-code":461,"test-code":458},"limyuquan":{"docs":342,"functional-code":337,"test-code":378},"xhamyo":{"docs":330,"functional-code":581,"test-code":507}},"authorContributionVariance":{"Meowloid":7948.1914,"SeanWong2":3957.4185,"calebyyy":112212.734,"limyuquan":47720.508,"xhamyo":69019.41},"authorDisplayNameMap":{"Meowloid":"CS2103T-T14-3 MOHA..IRUL","SeanWong2":"CS2103T-T14-3 SEAN..U XI","calebyyy":"CS2103T-T14-3 CALE..YONG","limyuquan":"CS2103T-T14-3 LIM ..QUAN","xhamyo":"CS2103T-T14-3 HAN ..N YU"}} +{"authorDailyContributionsMap":{"Meowloid":[{"date":"2024-10-03","commitResults":[{"hash":"6d52b3afee8962444e90c36ac2b95d997cd56515","isMergeCommit":false,"messageTitle":"Update AboutUs.md for user Meowloid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"1da00884e61d06c169535f406d73507b47beef0a","isMergeCommit":true,"messageTitle":"Merge pull request #13 from SeanWong2/branch-addPhoto","messageBody":"Add Sean\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"7a753c190d5034deaa47b30d287f10b6b18f4199","isMergeCommit":false,"messageTitle":"Add user stories to DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":9}}},{"hash":"aef0f67731025c3b8d3c43bc879741aa8701c95e","isMergeCommit":true,"messageTitle":"Merge pull request #32 from SeanWong2/branch-addNFR","messageBody":"Add NFR","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"b81fe3c266ae6d3dc4a8d2bddb3d8b1b1a3712c9","isMergeCommit":false,"messageTitle":"Change priority of certain user story and add two new relevant ones","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"01f486500b147a5ad869eaec76059e337687a793","isMergeCommit":false,"messageTitle":"Arrange user stories in descending order","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-05","commitResults":[{"hash":"76285069684eeb580f111fea75e8f8f9bf5e1d7c","isMergeCommit":false,"messageTitle":" Add user profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":3}}}]},{"date":"2024-10-06","commitResults":[{"hash":"4aea7f891fdd2ebe400d441e7edf564472316329","isMergeCommit":false,"messageTitle":"Add new class ListClientCommand and hook successfully","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0}}},{"hash":"5d4d102d26e3456d5a379949278bfd8d000bb8f4","isMergeCommit":false,"messageTitle":"Add placeholder for 4 new values in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-10-07","commitResults":[{"hash":"3c37c313c8949bf58d5b1f498f29a38bf2597f41","isMergeCommit":false,"messageTitle":"Attempt to port VRN, VIN, make and model to frontend","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d266ccaaf8cf192531c8f178912c13e4de547d10","isMergeCommit":false,"messageTitle":"Fix minor spelling error and implement frontend for car details successfuly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":7}}},{"hash":"8c7c7929aa3b0018886ce21eb079ffebb78d4978","isMergeCommit":false,"messageTitle":"Add Messages.formatCar and frontend user feedback message for when a new client with car is added","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1}}},{"hash":"3b6fed120143570895f860fad892a733376f0dac","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"6ec44451abc39a11f061c6aebc80fc617f7e9c4e","isMergeCommit":false,"messageTitle":"Change AddCommandIntegrationTest to fit changes to AddCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"f6b95ad2b7f0d88fc7a96af9492a71f6c7caeefa","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-09","commitResults":[{"hash":"ea0e4cbdd95138b0b4049b74c46436611fc4f4f0","isMergeCommit":false,"messageTitle":"Refactor code block for when Person to be added has a car or not","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"d19daa349c1d852b7bd392ebc861fb95a7909d18","isMergeCommit":false,"messageTitle":"Remove previous javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7}}}]},{"date":"2024-10-13","commitResults":[{"hash":"aa1dbe5d5c58e2b6a28a32c6398578f93995729a","isMergeCommit":false,"messageTitle":"Hook AddCarCommand skeleton and change AddClientCommand MESSAGE_USAGE to fit new VRN","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":1}}},{"hash":"c3a82a34a74eabd7f920f1baf833552dedec7b16","isMergeCommit":false,"messageTitle":"Add proper implementation of AddCarCommand and AddCarCommandParser classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":4}}},{"hash":"e85bc71aecad4a11452fcba5e18187ecdac4e0d2","isMergeCommit":false,"messageTitle":"Add non null checks to AddCarCommand for proper testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":44,"deletions":0}}}]},{"date":"2024-10-15","commitResults":[{"hash":"7337ff6175f40190abee48425ad7be2a635b13b6","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":173,"deletions":8}}},{"hash":"36a257babecd56bd2be9ecc90b87e8a17deaa4a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027Week9-AddCar\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"382e95c27a430c7b4a9f9cbb2f2f38d7063b026d","isMergeCommit":false,"messageTitle":"Change getTags to getIssues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f0baa99f5ab5cd56c5e2ee0dc6837a4593dae96e","isMergeCommit":false,"messageTitle":"Move import order to pass stylechecks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":16}}},{"hash":"a5f89266514825260c6d10e5d6253b131d5339c4","isMergeCommit":false,"messageTitle":"Move import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"c90dacc9430d79c0dd1566a50f1a12cc224417af","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":4}}},{"hash":"7d1c09784da044248eb68cb457466071d904c78f","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f0beeeae824078be3eb22d663f67676560014782","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":0}}},{"hash":"dc02ab1bbb9a10a3c58602b8417cd2f7256e8998","isMergeCommit":false,"messageTitle":"Add AddCarCommandParser tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":7},"test-code":{"insertions":91,"deletions":0}}},{"hash":"d33577dcdf8da4f3b122dd0708c9dd5308480566","isMergeCommit":true,"messageTitle":"Merge branch \u0027Week9-AddCar\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eaeb6aac6a220b101e8771a41ca7525ed4ceca44","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":17}}}]}],"SeanWong2":[{"date":"2024-10-03","commitResults":[{"hash":"455e1a2cc866d0e3ef088a34de4f8253ffcf8ec8","isMergeCommit":false,"messageTitle":"Update Sean\u0027s AboutUs page details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"5e42f8f556a54a3dd19bf4cbbd436a319bc07655","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Meowloid/Week7","messageBody":"Add Tahir\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"d8b73e8aadb18ec2a5da30de51ccf55891b883a2","isMergeCommit":false,"messageTitle":"Add NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"6a01ea6f6ff5dde207eab36fbe28355a582ffd00","isMergeCommit":false,"messageTitle":"Update NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"8f0e24135c799c05b3692d3db57531c4fb5c50e0","isMergeCommit":true,"messageTitle":"Merge pull request #41 from xhamyo/branch-DG-UseCase-NEW","messageBody":"Create DG Use Case","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"31d5fe95969c7fcde9a38ed107c06a3b117f2634","isMergeCommit":true,"messageTitle":"Merge pull request #58 from calebyyy/edit-client-feature","messageBody":"Edit client feature","fileTypesAndContributionMap":{}},{"hash":"ac00d6e59610b8601811648f88094af18fab614d","isMergeCommit":false,"messageTitle":"Add view client details","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":268,"deletions":2}}},{"hash":"013f8bc058a29a272882c1e9e5b21c39fb3224e2","isMergeCommit":false,"messageTitle":"Add working view client","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":16}}}]},{"date":"2024-10-08","commitResults":[{"hash":"5e1e827328f32d8d63466259ff9debba99cc9310","isMergeCommit":false,"messageTitle":"FIx tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":3,"deletions":2}}},{"hash":"4b45298c7196af91f70a702dc4f5c0b46e3abcee","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0},"test-code":{"insertions":88,"deletions":0}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d6c11ff7ee7380a6b012d9e8284364caa608e34c","isMergeCommit":false,"messageTitle":"Add find vrn feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3},"test-code":{"insertions":14,"deletions":3}}}]},{"date":"2024-10-12","commitResults":[{"hash":"129057bf13580791513d4d6ce41aa02222e3c6e9","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"eea80ea53c6869ddfd76f4d53c2b37689c417ba3","isMergeCommit":true,"messageTitle":"Merge pull request #74 from limyuquan/remove-spacing-in-vrn","messageBody":"Update VRN to remove spacing","fileTypesAndContributionMap":{}},{"hash":"3eae84a310b30a8953bb8b8438a9993057220a03","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":3}}},{"hash":"fa60973bb2eb259484032df5fd7a201b82b5555f","isMergeCommit":false,"messageTitle":"Add find command parser tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"758efc1934c538757c4b7103f25074711939f10f","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":0}}}]}],"calebyyy":[{"date":"2024-10-03","commitResults":[{"hash":"9b00b15ff6e285c4120c97297dc3b0f784a10ff9","isMergeCommit":false,"messageTitle":"Add about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-04","commitResults":[{"hash":"644995d2d66e34658f61fb748b1a849f68ce14eb","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Meowloid/Week7","messageBody":"Add user stories to DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"497f36db836e0893b30f521f1a2393c5074a7eab","isMergeCommit":false,"messageTitle":"Add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"e6958026d24c2e7ff4a6c6a4dfe02cc60b601616","isMergeCommit":true,"messageTitle":"Merge pull request #55 from limyuquan/add-client-feature","messageBody":"Add add-client feature with car support","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"9e8cca7b1ef56866f12794478a60a57e6a847231","isMergeCommit":false,"messageTitle":"Add edit-client feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":241,"deletions":13},"test-code":{"insertions":270,"deletions":269}}},{"hash":"cd40bbb49a65d128719abfb7a85f7415da5f8474","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":8},"test-code":{"insertions":437,"deletions":311}}}]},{"date":"2024-10-13","commitResults":[{"hash":"59d9e042d7d318288eee663502641e854501e0bc","isMergeCommit":false,"messageTitle":"Add exception handling for no car","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3fd7016af038405ff7641744e238706babd3961c","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":0}}},{"hash":"df5f3179db27d2b4afd6bcffdd6976296657b49d","isMergeCommit":false,"messageTitle":"Change all occurences of tag to issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":213},"test-code":{"insertions":224,"deletions":208}}}]}],"limyuquan":[{"date":"2024-10-03","commitResults":[{"hash":"9dbd7ca8911413af284eb05bdc50160d3caa24e1","isMergeCommit":false,"messageTitle":"Add About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f5a0890c2c739bea3dc37856707dc987d0670c38","isMergeCommit":true,"messageTitle":"Merge pull request #20 from xhamyo/branch-AboutUs","messageBody":"Update Han Yu\u0027s AboutUs page details","fileTypesAndContributionMap":{}},{"hash":"d2455bc79bcf55db4737caeb969013005f6fa835","isMergeCommit":true,"messageTitle":"Merge pull request #23 from calebyyy/Add-AboutUs","messageBody":"Add about us","fileTypesAndContributionMap":{}},{"hash":"8e470f5b70c5cb25b8daace382ca51b2a3549e9d","isMergeCommit":false,"messageTitle":"Update README and Site","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":12}}},{"hash":"951f614ac180848f41b8da7b6dc3120b2d5d4352","isMergeCommit":false,"messageTitle":"Update README and Site","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-04","commitResults":[{"hash":"cb61795cf9b9a9347de3bde10647aab48ab01f73","isMergeCommit":true,"messageTitle":"Merge pull request #45 from calebyyy/DG-glossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10fdf41c747deab6b01b31767fc413cf9de6333d","isMergeCommit":false,"messageTitle":"Update Website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}},{"hash":"7845374744db771f30d0bb88502762719311702c","isMergeCommit":false,"messageTitle":"Update readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0a31bbb6e32ab249f460358ce90aa390cbc6f774","isMergeCommit":true,"messageTitle":"Merge pull request #47 from limyuquan/update-website","messageBody":"Update Website","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"1f8ae38f84452738de2742d2666a3d552824bfea","isMergeCommit":true,"messageTitle":"Merge pull request #49 from xhamyo/branch-Car","messageBody":"Create Car Class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"e5689baad951c0ccb1abbfa36476a540dc548190","isMergeCommit":false,"messageTitle":"Add add-client feature with car support","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":338,"deletions":37},"other":{"insertions":27,"deletions":12},"test-code":{"insertions":460,"deletions":64}}},{"hash":"44a9edb00865a6ce4c97ca9a53bb8013687b562b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-client-feature","messageBody":"Merge from master to here\n","fileTypesAndContributionMap":{}},{"hash":"62aff42921f293b5c88850f39a227137296cbb1b","isMergeCommit":false,"messageTitle":"Fix whitespace CI issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":4,"deletions":4}}},{"hash":"e68ad5771fb1548abe13429561112b744e69fe41","isMergeCommit":false,"messageTitle":"Update with style and example fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":54,"deletions":54}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a6c9286e2ceeef36203a50e906d0ef41e52e5c5f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from SeanWong2/branch-addViewClient","messageBody":"Add View Client Feature","fileTypesAndContributionMap":{}},{"hash":"18f5638586483eda408f687055fbc86b4d1cd54f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Meowloid/Week8-Front-End-Fixes-and-listclient","messageBody":"Add frontend support for add-client","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"438e1de35b634100262028aed09d831477ec5db6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from xhamyo/branch-deleteClient","messageBody":"Add Client Feature (delete-client)","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"f44e2ea571907ed7aa935474e46a6be6a5d719e3","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":271,"deletions":107}}},{"hash":"2649df992d52f54340249456dd42d5ec784b136f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"beb6f49a5b6b34675cbd3452e8c5d3ebed450bb3","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a2f0a5355931f2e9ad7002b1dcffcc8414467a4a","isMergeCommit":true,"messageTitle":"Merge pull request #65 from limyuquan/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"d0732f5751e7964e423a09a8bec32467f47c90d8","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":17}}},{"hash":"8795375a0d58ea237063b97be3a2388816fcc735","isMergeCommit":true,"messageTitle":"Merge pull request #66 from limyuquan/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"3c1866b7c19523d67396cdabe74def465b1107b5","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":18}}},{"hash":"3e6c154eb3d93c59dd9b845e1f8968ed2822e5f9","isMergeCommit":true,"messageTitle":"Merge pull request #67 from limyuquan/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"ef840b4975ca4ef4d2981ed2fdf7bb5d7da1ec1f","isMergeCommit":false,"messageTitle":"Update user guide witth additional styling and Icons","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":69,"deletions":17}}},{"hash":"915d76f7ac71a43f1547b32dfe650730ddc2f490","isMergeCommit":true,"messageTitle":"Merge pull request #69 from limyuquan/update-user-guide","messageBody":"Update user guide witth additional styling and Icons","fileTypesAndContributionMap":{}},{"hash":"869ec6f66f0e8e11ca193f5daa85fda596ff7eed","isMergeCommit":true,"messageTitle":"Merge pull request #70 from xhamyo/branch-UpdateCommands","messageBody":" Update Command Class names and Command Words ","fileTypesAndContributionMap":{}},{"hash":"64812e2c6fef33245a734dce81aa16caac01e7bb","isMergeCommit":false,"messageTitle":"Update VRN to remove spacing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":13},"docs":{"insertions":11,"deletions":17},"test-code":{"insertions":54,"deletions":54}}},{"hash":"fd03fe061f54ef9c431ee15476d71299024cc6cd","isMergeCommit":true,"messageTitle":"Merge pull request #64 from SeanWong2/branch-addFindVrn","messageBody":"Add find vrn feature","fileTypesAndContributionMap":{}},{"hash":"6f9de698508763b99f86ffa5c923500e5cbd720b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from xhamyo/branch-UpdateGUI","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"3a4fd761582fd433283debc6f424f4079fae8743","isMergeCommit":true,"messageTitle":"Merge pull request #79 from calebyyy/edit-client-missing-car-bug","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"69ee721e06a4e04c768a8f915cbd0e82a9ba8af7","isMergeCommit":true,"messageTitle":"Merge pull request #80 from calebyyy/issues","messageBody":"Change all occurences of tag to issue","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"5d375f758a6827c3f1cc1dcd09c39e8d84e6a3b6","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Meowloid/Week9-AddCar","messageBody":"Add Car feature and tests and Update user guide","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}],"xhamyo":[{"date":"2024-10-03","commitResults":[{"hash":"a5a41768b6dc40b1fef2ff2e48ee3d20b0da8002","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"fa7cee85739aa284a764f72271f2c6ee734008ff","isMergeCommit":true,"messageTitle":"Merge pull request #17 from limyuquan/Add-AboutUs","messageBody":"Update Yu Quan\u0027s AboutUs page details","fileTypesAndContributionMap":{}},{"hash":"43f6d0fd30c7d172e59b9b3018901bb528cd9537","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/xhamyo/tp","messageBody":"* \u0027master\u0027 of https://github.com/xhamyo/tp:\n Add about us\n Update name of image\n Update Sean\u0027s AboutUs page details\n Update AboutUs.md for user Meowloid\n Add user Meowloid photo\n Add Sean\u0027s photo\n Remove Sean\u0027s photo\n Update AboutUs page\n Add About Us\n Add Sean\u0027s Photo\n","fileTypesAndContributionMap":{}},{"hash":"1aaf5bf9394340900eac7373cee1672bd2cde622","isMergeCommit":true,"messageTitle":"Merge pull request #31 from limyuquan/update-readme","messageBody":"Update README and Site","fileTypesAndContributionMap":{}},{"hash":"809578dbf6b5338434a9149d641fb3223b90747e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T14-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6e3d791970ef5ced99ba7b2d0082093c45747968","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/xhamyo/tp","messageBody":"* \u0027master\u0027 of https://github.com/xhamyo/tp:\n Update README and Site\n Update README and Site\n","fileTypesAndContributionMap":{}},{"hash":"d7c555d518ea39cec576a6918a30413336d54226","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T14-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36464f21edcb9f800c653383dd53061087f2dbb4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/xhamyo/tp","messageBody":"* \u0027master\u0027 of https://github.com/xhamyo/tp:\n Update NFR\n Add NFR\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"27a0ef69b2713ea3f724fe7054fbbd54854e7409","isMergeCommit":false,"messageTitle":"Create DG Use Case","messageBody":"Created DG Use Cases for Add Client, Delete Client,\nList Clients, Edit Client and View Client.\n\nUpdated README.\n","fileTypesAndContributionMap":{"docs":{"insertions":98,"deletions":12}}},{"hash":"218a26bee880cf710efffd73cacc84d9e599b95e","isMergeCommit":false,"messageTitle":"Add DG Use Case","messageBody":"Created DG Use Cases for Add Car, Delete Car,\nEdit Car, Add Issue, Delete Issue, Edit Issue.\n","fileTypesAndContributionMap":{"docs":{"insertions":198,"deletions":1}}},{"hash":"fc3c4d0bf89e55c40103ddd09aa6432e34ac506a","isMergeCommit":false,"messageTitle":"Update DG Use Case","messageBody":"Small changes to Use Cases.\n","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":45}}},{"hash":"8a9a59107fe6aa13e8e78109d4d1b2e86d6093ae","isMergeCommit":false,"messageTitle":"Update DG Use Case II","messageBody":"Capitalised nouns such as Client, Car, Issue.\n","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":64}}},{"hash":"2c612c7e987333194f92b0d8a2cd8972a5a9e3a2","isMergeCommit":false,"messageTitle":"Update DG Use Case III","messageBody":"Capitalised nouns such as Client, Car, Issue.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}}]},{"date":"2024-10-05","commitResults":[{"hash":"af531e2c5bdc849e3123ec92230d6696e0f3f8b3","isMergeCommit":false,"messageTitle":"Create Car Class","messageBody":"Added Car Class and Class for its fields.\n\nAdded Test Cases for Car Class and Class for its fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":418,"deletions":0},"test-code":{"insertions":370,"deletions":0}}},{"hash":"a7462cc69be246760383a3ebb0581eab09994e67","isMergeCommit":false,"messageTitle":"Fix Typo","messageBody":"Fixed typographical errors and string formatting.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"b830b8ee0b5d01ee273db018b18f289d41cf8bc0","isMergeCommit":false,"messageTitle":"Rename Make and Model","messageBody":"Renamed to CarMake and CarModel to avoid confusion with Model.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":18},"other":{"insertions":34,"deletions":34},"test-code":{"insertions":136,"deletions":136}}},{"hash":"8fc060036884bc713b44afbe0a62a2ec054fe813","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Meowloid/Week7","messageBody":"Add user profile and value proposition","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"b71b6f29aa79a39555ad38e1025dc04bc00e3bdc","isMergeCommit":false,"messageTitle":"Add delete-client Feature","messageBody":"Update command word from delete to delete-client.\n\nRefactor Delete to DeleteClient.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":41,"deletions":40},"test-code":{"insertions":6,"deletions":6}}}]},{"date":"2024-10-12","commitResults":[{"hash":"53540bee4a946f97d048a04e621547e964817c8e","isMergeCommit":false,"messageTitle":"Update AddClientCommand","messageBody":"Update AddCommand and its respective Parser and test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":11,"deletions":11},"test-code":{"insertions":3,"deletions":3}}},{"hash":"e8dcdd7a903d02ae6c7e9d8fa1fb65d29a0601a4","isMergeCommit":false,"messageTitle":"Update ViewClientCommand","messageBody":"Update ViewCommand and its respective Parser and test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":26},"other":{"insertions":20,"deletions":20}}},{"hash":"809b0759a1f22fe44edb3234c7eb59415c6000e0","isMergeCommit":false,"messageTitle":"Update EditClientCommand","messageBody":"Update EditCommand and its respective Parser and test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":63,"deletions":63},"test-code":{"insertions":11,"deletions":11}}},{"hash":"f7fc01451b7dd0764737fe08a20bb3d5f86dec85","isMergeCommit":false,"messageTitle":"Update ListClientCommand","messageBody":"Update ListCommand and its respective Parser and test cases.\n\nRemoved duplicate ListCommand class and Parser case.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":33},"other":{"insertions":4,"deletions":4},"test-code":{"insertions":6,"deletions":6}}},{"hash":"e0995cdd5fb95facb97dda60ef60a1d700ba73e6","isMergeCommit":false,"messageTitle":"Fix Code Style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5},"test-code":{"insertions":24,"deletions":13}}},{"hash":"dec79b5b77da656a691b7bbb7ffb49b80c760752","isMergeCommit":false,"messageTitle":"Fix Code Style II","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"be6adf2aa1c5992bcdabbff186f395a1f5ceb634","isMergeCommit":false,"messageTitle":"Update List GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":52}}},{"hash":"e3f9c52a651000fc5504fe689cc909d6e2ba7746","isMergeCommit":false,"messageTitle":"Update View GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":39}}},{"hash":"a6b2651dbd82511a6eda3084e4575588a1225046","isMergeCommit":false,"messageTitle":"View GUI Bug Fix","messageBody":"Fixed bug where Issues of other Clients get collected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"Meowloid":{"docs":67,"functional-code":212,"test-code":313},"SeanWong2":{"docs":12,"functional-code":252,"test-code":176},"calebyyy":{"docs":9,"functional-code":461,"test-code":458},"limyuquan":{"docs":342,"functional-code":337,"test-code":378},"xhamyo":{"docs":330,"functional-code":581,"test-code":507}},"authorContributionVariance":{"Meowloid":7948.1914,"SeanWong2":3957.4185,"calebyyy":112212.734,"limyuquan":47720.508,"xhamyo":69019.41},"authorDisplayNameMap":{"Meowloid":"CS2103T-T14-3 MOHA..IRUL","SeanWong2":"CS2103T-T14-3 SEAN..U XI","calebyyy":"CS2103T-T14-3 CALE..YONG","limyuquan":"CS2103T-T14-3 LIM ..QUAN","xhamyo":"CS2103T-T14-3 HAN ..N YU"}} diff --git a/AY2425S1-CS2103T-T15-2_tp_master/commits.json b/AY2425S1-CS2103T-T15-2_tp_master/commits.json index 83d92f2b..52c461ce 100644 --- a/AY2425S1-CS2103T-T15-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T15-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"waihin26":[{"date":"2024-09-27","commitResults":[{"hash":"10d03b97dd2486151a8ed94d1cc17e7c86211eec","isMergeCommit":false,"messageTitle":"Add about us message for myself. Includes personal picture and linkedin link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"15a01b0a8ab13d6797881d5fef034d80b9713295","isMergeCommit":false,"messageTitle":"Add NFR and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":124,"deletions":26}}},{"hash":"55ef4303b55047d61b28d129540a81201b57c63f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-NFRs-\u0026-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c68716ae3d097704999c713952083edb7d8cdfdc","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":165,"deletions":123}}},{"hash":"386ef59a99406f6a4b9aa4b3026b2f2d030df248","isMergeCommit":false,"messageTitle":"Fix usecases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":65}}},{"hash":"ea6b86460a562fddd7029af4a6312e8da5d7df50","isMergeCommit":false,"messageTitle":"add fees, classid, monthspaid field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":303,"deletions":19},"test-code":{"insertions":38,"deletions":10}}}]},{"date":"2024-10-10","commitResults":[{"hash":"beb5b7b976f84f69678d1813eb5073b31be8d68e","isMergeCommit":false,"messageTitle":"Update extensions numbering","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d15f8e18b2362cce30fc75ed529abb3be97ef245","isMergeCommit":false,"messageTitle":"fixing some cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":32},"test-code":{"insertions":16,"deletions":23}}},{"hash":"68fec2f7dc1ab7618407d927ff3166bdd66318da","isMergeCommit":false,"messageTitle":"Fix more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":6,"deletions":1}}}]},{"date":"2024-10-13","commitResults":[{"hash":"9c0effbe06c3a454ba50cf1c92a561b616a68789","isMergeCommit":false,"messageTitle":"Fix code to conform to original implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":34},"test-code":{"insertions":17,"deletions":14}}},{"hash":"44e665373f3277b80a1cfcacf2f692ae3c70a9a6","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":2,"deletions":3}}},{"hash":"03467b739e10927d4c46da67deca55adfcd1c90e","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":14,"deletions":13}}}]},{"date":"2024-10-15","commitResults":[{"hash":"c08faa9c8a4c527230a5f773f7bcc3917d63c398","isMergeCommit":false,"messageTitle":"Update methods in Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":6},"test-code":{"insertions":10,"deletions":4}}},{"hash":"e77f8cd87b7165bdad53eb62a6d4e1b9ce965343","isMergeCommit":false,"messageTitle":"Add test cases, update Json files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":24,"deletions":21}}},{"hash":"fe49c4b0ac2ee388da0c69df32f18cd074846cf4","isMergeCommit":false,"messageTitle":"Add ClassIdTest class and FeesTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":114,"deletions":0}}},{"hash":"8b9c7811bf984d2587dd74a84b6d3274f61e55f2","isMergeCommit":false,"messageTitle":"Add test case to cover equals method for addCommandParse","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"5d95bafbe5793a73349cc55319a412c89893c8c5","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-16","commitResults":[{"hash":"969c8b716cb6acbc6fe28121462156cc7dd246af","isMergeCommit":false,"messageTitle":"Changed default fees to conform to test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"2c1e0bf79dc19a3a59dfbb0ff7e0ecd3bcc2362c","isMergeCommit":false,"messageTitle":"Change default fees to conform to test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"58db8e1b03699b375f692eee16e1bc2642d2e137","isMergeCommit":false,"messageTitle":"add test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-10-17","commitResults":[{"hash":"f43b3113c941414569f6e03ecbf662c2d70ec073","isMergeCommit":false,"messageTitle":"Remove debug statements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"c3cb27b97da0316d590ffd2d42908b083d91fe5e","isMergeCommit":false,"messageTitle":"Fix createEditedPerson method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"4a35a44a941fd9266e1657fd9822706f774e8841","isMergeCommit":false,"messageTitle":"Remove println statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"53bbb94c544d04d76ca13ae39f9c50450e8e1943","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-test-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"870e2d052417e03dd5a1ef34f6981bfce1c6555b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"07801aeb7007b13b7013a1d10bdd6552dbf6d8c4","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":1,"deletions":2}}}]}],"sumomomomomo":[{"date":"2024-09-27","commitResults":[{"hash":"06d5b0e0ebee4328e92e1eef3f4bd05e77b1a404","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e2600c41ad844f1e0535844dc8d434eea0a34efe","isMergeCommit":false,"messageTitle":"Add Matthew\u0027s info into AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"5511da3cbdcef691a68e94fa4cd820476d17d8ad","isMergeCommit":false,"messageTitle":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-09-30","commitResults":[{"hash":"a196d58a813ff35ad5272e505d0d392b5b712655","isMergeCommit":false,"messageTitle":"Edit product scope for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"d0302d3710aeff089a7423abe52ddb5609a07eeb","isMergeCommit":true,"messageTitle":"Merge pull request #57 from sumomomomomo/edit-product-scope","messageBody":"Edit product scope for DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"ede46bc993015209b6ce7c23888404787ca68036","isMergeCommit":false,"messageTitle":"Fix failing testcases","messageBody":"* Fix Fees, ClassId, MonthsPaid to have `String` type for `value`\n* Update Storage implementation - TODO: to decide if fees, classId, monthsPaid should be optional fields in json\n* Rollback some changes to add/edit commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":85},"test-code":{"insertions":69,"deletions":38}}},{"hash":"0549fc81415d1132cdd3f447fab8a933c7dd38d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T15-2:master\u0027 into branch-add-fees-classid-markpaid","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f6a724b6b0f9e1344111030f2bafe1756e083fe","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":9}}},{"hash":"fd7cc2b6b079a2661d8833b085c59c36f2897d62","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":17},"test-code":{"insertions":67,"deletions":1}}},{"hash":"857383488a5c0cd66d4d0266539d2907d2f8d073","isMergeCommit":false,"messageTitle":"Remove unused parser functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cce775888c57c76eb5cdfb54bd37884eab959b0b","isMergeCommit":true,"messageTitle":"Merge pull request #59 from sumomomomomo/branch-add-fees-classid-markpaid","messageBody":"Add fees, classId, monthsPaid fields","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"b0610eb21d21b87af2439a410e640c1756993692","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kienvumrpm/add-markpaid","messageBody":"Implement markpaid","fileTypesAndContributionMap":{}},{"hash":"2e96f0a95dbbbb753f3f132515ca57706fc1e545","isMergeCommit":false,"messageTitle":"Edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}}]},{"date":"2024-10-13","commitResults":[{"hash":"4ae67b4281af8365b1cee6c46be4a4c0f47165b2","isMergeCommit":false,"messageTitle":"Refactor FindCommandParser to use argMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":66},"test-code":{"insertions":19,"deletions":20}}},{"hash":"50a2d0499661b1a88b8a9025bc33dd2a9823523b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from hooyushing/branch-enhance-find","messageBody":"Implement find functionality: n/name and c/classId","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"ece3cb8a0178b0ec118275e2260321cee8b2c78b","isMergeCommit":false,"messageTitle":"Refactor MarkPaid","messageBody":"1. Rename: Markpaid -\u003e MarkPaid\n2. Refactor MonthsPaid -\u003e MonthPaid is singular, MonthsPaid is a collection of MonthPaid, similar to how Tag is implemented\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":95},"other":{"insertions":37,"deletions":32},"test-code":{"insertions":17,"deletions":13}}},{"hash":"ac2488ef278d7b41adfd7fc695878629e90d8042","isMergeCommit":false,"messageTitle":"Fix placeholder test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":9},"test-code":{"insertions":9,"deletions":15}}},{"hash":"ac00b855b9d4e3e6bede1becebb98ce9b14a9a69","isMergeCommit":false,"messageTitle":"Add tests for MarkPaidCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0},"test-code":{"insertions":93,"deletions":0}}},{"hash":"aae9cccea8d9c6fe045a8eec619296a32dac191a","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"8d93639059d8c24d530a245296f447034cdf1c08","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedMonthPaid","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":2}}}]},{"date":"2024-10-17","commitResults":[{"hash":"3eec5f6b3fc0d2ac52607a9886d417a1a3f56f1c","isMergeCommit":false,"messageTitle":"Add MarkPaidCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0},"test-code":{"insertions":76,"deletions":2}}},{"hash":"862c58313c0644ea22c75276503de3e1b4a6174c","isMergeCommit":false,"messageTitle":"Add MonthPaidTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":13},"test-code":{"insertions":26,"deletions":0}}}]}],"hooyushing":[{"date":"2024-09-21","commitResults":[{"hash":"b5b865bae6bcf4e6c7e5c138f393becd27f53152","isMergeCommit":true,"messageTitle":"Merge pull request #5 from hooyushing/branch-add-photo","messageBody":"Add picture","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"402d117f29a9b083260c78caeac615884294ae16","isMergeCommit":true,"messageTitle":"Merge pull request #12 from waihin26/add-waihin-photo","messageBody":"Add profile photo","fileTypesAndContributionMap":{}},{"hash":"9b0085d2752761aa61337f834c5310fa4c68916e","isMergeCommit":true,"messageTitle":"Merge pull request #13 from sumomomomomo/add-matthew-photo","messageBody":"Add Matthew\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"bef3eeee6ab47a942bad906cc76aac8c842d28bb","isMergeCommit":true,"messageTitle":"Merge pull request #14 from munhuikim/add-munhui-photo","messageBody":"Add Munhui\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"4346ed65a063782fd3a09feb74e50d91152811a7","isMergeCommit":false,"messageTitle":"Add personal description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"27a4427c4343c91267fa6a9fa6e7991b5b03e166","isMergeCommit":true,"messageTitle":"Merge pull request #19 from hooyushing/branch-about-us","messageBody":"Add personal description","fileTypesAndContributionMap":{}},{"hash":"580ae50208708b792b1e4c49f5956193f3c5d38d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from sumomomomomo/edit-aboutus","messageBody":"Add Matthew\u0027s info into AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"389fa904ae0953001e4e06dd9ed65dee7863d2ce","isMergeCommit":true,"messageTitle":"Merge pull request #21 from waihin26/edit-aboutUs","messageBody":"Add about us message for Wai Hin","fileTypesAndContributionMap":{}},{"hash":"200e7edff8c7953ec13d9fa37ffc00c7e2cd37bf","isMergeCommit":true,"messageTitle":"Merge pull request #26 from munhuikim/branch-munhui-profile","messageBody":"Add information about munhuikim","fileTypesAndContributionMap":{}},{"hash":"3ce3268dfd0ac763d9c61e1191ff49047fa8c3f2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kienvumrpm/add-about-kien","messageBody":"add about Kien","fileTypesAndContributionMap":{}},{"hash":"a4bae6ce65d898236c7a3d6767610e02c03a6b13","isMergeCommit":true,"messageTitle":"Merge pull request #29 from munhuikim/branch-munhui-profile","messageBody":"Add image link for munhui","fileTypesAndContributionMap":{}},{"hash":"495d700e3c321fec5257f9898726fdfbc7396f0b","isMergeCommit":true,"messageTitle":"Merge pull request #31 from sumomomomomo/edit-aboutus","messageBody":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"5710476c47370a2bc7f77803c7e668bb2e36442d","isMergeCommit":false,"messageTitle":"Add ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"3e71d65167c0230f128fa3265bae0617ee51f8d9","isMergeCommit":false,"messageTitle":"Add emoji","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"dfe6b6abc6d27ff013cdff29f40fac614e854878","isMergeCommit":true,"messageTitle":"Merge pull request #35 from hooyushing/branch-README","messageBody":"Add ReadMe","fileTypesAndContributionMap":{}},{"hash":"ed2ffea0971983bb0799925f464c2b8c8d7fc640","isMergeCommit":true,"messageTitle":"Merge pull request #36 from sumomomomomo/edit-ui-png","messageBody":"Edit Ui.png","fileTypesAndContributionMap":{}},{"hash":"3be5bd66243a539056a9d14e2e572a0313281a26","isMergeCommit":false,"messageTitle":"Add site-wide change","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"51f7b3970b89b55adffff5deba27f414964a76f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from hooyushing/branch-config","messageBody":"Add site-wide change","fileTypesAndContributionMap":{}},{"hash":"1b2c5789fc3a6b8fb5ab14287745cd7c33d1f167","isMergeCommit":true,"messageTitle":"Merge pull request #40 from munhuikim/branch-user-stories","messageBody":"Add user stories and glossary","fileTypesAndContributionMap":{}},{"hash":"d00a2a0132ad9e1548f56f75792e20c9253e5eea","isMergeCommit":true,"messageTitle":"Merge pull request #41 from waihin26/add-NFRs-\u0026-use-cases","messageBody":"Add NFR and use cases","fileTypesAndContributionMap":{}},{"hash":"52cb337e0f9aa47771b426c203dadbf8e829051a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from waihin26/branch-hi","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"02ebd1bb6870d924a495c75a2c36d8c007717312","isMergeCommit":false,"messageTitle":"Change find command to follow format","messageBody":"Add fuzzy search through regex\n","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":5},"test-code":{"insertions":3,"deletions":3}}},{"hash":"c376c7234537c1321f707c7cae6a92b7bf4d7393","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"710b787c6315f143d61012f0ed6bafcb55f72de8","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1f8e2f022c4e1eb09a8a62e8e7fb7093e293e111","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"9fbc4ab9db4abc11ac77b1a0ea48ae899214fbef","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"83050ca0a3eab434fded25bcb59fbce6443daf50","isMergeCommit":false,"messageTitle":"Add find to support prefix n/","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":20}}},{"hash":"ecc280b74530b59c3b14408e7e6746d977fa24a6","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"fdc766e0f5a9f6c6b7dec4687c0e7df04599ed86","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"2d04c037fa22adf9352de40bbd2c7dc5b35225e4","isMergeCommit":true,"messageTitle":"Merge pull request #54 from hooyushing/branch-add-find","messageBody":"Change find command to follow format","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0ccfa2b64089ba65d7ac3a9959f7e5f6f31f24a2","isMergeCommit":false,"messageTitle":"Add find by classid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":7},"test-code":{"insertions":21,"deletions":0}}},{"hash":"ce3e0f44a64aed4676f816417febf6049369e5cf","isMergeCommit":false,"messageTitle":"Change style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":4,"deletions":3}}},{"hash":"284bb671966c49fd436dc1383061c6b674dd3522","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":1}}},{"hash":"dc081331927c2b814e09d64b9ab0a83ea75026ad","isMergeCommit":true,"messageTitle":"Merge pull request #64 from hooyushing/branch-add-find-class","messageBody":"Add find by classid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"f76d03396c92339b98d082d98dafe016d4c05406","isMergeCommit":false,"messageTitle":"Update comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"f8835932735e71329a84a517fd7249eb482f009e","isMergeCommit":true,"messageTitle":"Merge pull request #66 from hooyushing/branch-add-find-class","messageBody":"Update comment","fileTypesAndContributionMap":{}},{"hash":"9ca0689201bc30cc4869916910b3d50a8a47459f","isMergeCommit":true,"messageTitle":"Merge pull request #68 from waihin26/fix-extension-numbers","messageBody":"Update extensions numbering","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"e2dc0479056568f84fdb409d38599ed0ef33d201","isMergeCommit":true,"messageTitle":"Merge pull request #74 from sumomomomomo/edit-comments-markpaid","messageBody":"Edit comments for markpaid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"11513071de21b79f5bc575d9d734e72bf2128a2f","isMergeCommit":false,"messageTitle":"Add enhancement to find","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":4},"test-code":{"insertions":123,"deletions":0}}},{"hash":"28484cc833c4e7f0745a2d7e99c3885f860afb3a","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":99,"deletions":0}}},{"hash":"97e3e7eb91f1a329afe5d516ecb3aa931318fbd7","isMergeCommit":false,"messageTitle":"Fixed parser support","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2},"test-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"cdb6fdbdabdc65ff5ff29841b671674e58ec7632","isMergeCommit":true,"messageTitle":"Merge pull request #67 from munhuikim/branch-add","messageBody":"Add classId field and fees field in the AddCommand","fileTypesAndContributionMap":{}},{"hash":"3584b0368f2f86938514b23184dc106e53f9f47a","isMergeCommit":false,"messageTitle":"Abstract certain methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":49},"test-code":{"insertions":20,"deletions":20}}},{"hash":"dccb69a779e614206e2a1f8f06f689a1cd9331be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-enhance-find","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cbcce0b7f2f47292da6c293882d2cd38c2bbaa20","isMergeCommit":false,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"33601e9ed86388eb6d63b4337afde8d1d4c6731f","isMergeCommit":false,"messageTitle":"Update test method name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":20}}},{"hash":"08834dcda52846cfa93c8b668aebe074b1b39d9d","isMergeCommit":false,"messageTitle":"Change invalid message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"0f37bab4ef4b008a8718810bd1bbfc8c3b3aa42d","isMergeCommit":true,"messageTitle":"Merge pull request #1 from sumomomomomo/branch-enhance-find","messageBody":"Refactor FindCommandParser to use argMultimap","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"0992fd3f43f5396d9db1eb345791fe360f6b95c7","isMergeCommit":true,"messageTitle":"Merge pull request #79 from waihin26/conforming-to-conventions","messageBody":"Fix code to conform to original implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"97ea2bd92664d3ddc0a662a030ca5b11db82ca6a","isMergeCommit":true,"messageTitle":"Merge pull request #82 from sumomomomomo/add-markpaid-parser","messageBody":"Implement MarkPaid","fileTypesAndContributionMap":{}},{"hash":"6660a375f4e2d1f096abaf945aff1412cc31a2cd","isMergeCommit":true,"messageTitle":"Merge pull request #81 from waihin26/add-test-cases","messageBody":"Add test cases","fileTypesAndContributionMap":{}}]}],"munhuikim":[{"date":"2024-09-27","commitResults":[{"hash":"2a9b5d366f161c73af672fa6e4803b6eb6e8e79f","isMergeCommit":false,"messageTitle":"Add information about munhuikim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7f4461ac47928942421924a3d1e6002435c7ba66","isMergeCommit":false,"messageTitle":"Add roles and responsibilities for munhui kim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6e3335e6c028ca3f13f2b65a7f1f4ecf314bb55e","isMergeCommit":false,"messageTitle":"Add image link for munhui","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dcd023fb14e8549bbba53b54ff99d756d2f4f56","isMergeCommit":false,"messageTitle":"Add user stories and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":37}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9a3356328c40a0394964086b192037ae5d2b1541","isMergeCommit":false,"messageTitle":"Add classId field and fees field in the AddCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":38}}},{"hash":"78185ec4987175551cb28a8e3d7bbbcab31811e4","isMergeCommit":false,"messageTitle":"Correct failing tests in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":41},"test-code":{"insertions":152,"deletions":136}}}]},{"date":"2024-10-11","commitResults":[{"hash":"238ca6ced0260906fd03a274014b95dc79d84aa3","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":40},"test-code":{"insertions":173,"deletions":68}}}]},{"date":"2024-10-12","commitResults":[{"hash":"2e9fce48101c5b83dc7d294e1dcbf36dcf1541a2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103T-T15-2/fixingOneTestCase","messageBody":"Fix test case","fileTypesAndContributionMap":{}}]}],"kienvumrpm":[{"date":"2024-09-27","commitResults":[{"hash":"765aed049a057361af443bb3b6f7f8cc95b66abb","isMergeCommit":false,"messageTitle":"add about Kien","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"18aeae7d322eddfef51eaed57474ddd6a8f619cc","isMergeCommit":false,"messageTitle":"Add role and responsilibities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"11a0a7a1a210070fff76b18000aeab13b6521bf6","isMergeCommit":false,"messageTitle":"Implement markpaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":2}}},{"hash":"c2b2e0fdd6c00440256828643ccecca70da24920","isMergeCommit":false,"messageTitle":"Change line break format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":90}}},{"hash":"c8639c991f45e672996fb600f5837a101b0bcc04","isMergeCommit":false,"messageTitle":"Add parser support for markpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":9}}},{"hash":"9c7ec68c619105ab4823f62a33be4b98725e9190","isMergeCommit":false,"messageTitle":"Fix line breakers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":37}}}]},{"date":"2024-10-15","commitResults":[{"hash":"66fe669cf887b6ffac7667ed5a2a1080f9147008","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-markpaid-parser","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"waihin26":{"docs":119,"functional-code":216,"test-code":192},"sumomomomomo":{"docs":15,"functional-code":339,"test-code":349},"hooyushing":{"docs":11,"functional-code":195,"test-code":276,"other":2},"munhuikim":{"docs":16,"functional-code":87,"test-code":124},"kienvumrpm":{"docs":4,"functional-code":81,"test-code":0}},"authorContributionVariance":{"waihin26":29539.5,"sumomomomomo":16730.55,"hooyushing":6616.2896,"munhuikim":12453.279,"kienvumrpm":6479.1235},"authorDisplayNameMap":{"waihin26":"CS2103T-T15-2 WONG.. HIN","sumomomomomo":"CS2103T-T15-2 MATT.. HAO","hooyushing":"CS2103T-T15-2 HOO ..HING","munhuikim":"CS2103T-T15-2 KIM ..NHUI","kienvumrpm":"CS2103T-T15-2 VU H..KIEN"}} +{"authorDailyContributionsMap":{"waihin26":[{"date":"2024-09-27","commitResults":[{"hash":"10d03b97dd2486151a8ed94d1cc17e7c86211eec","isMergeCommit":false,"messageTitle":"Add about us message for myself. Includes personal picture and linkedin link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"15a01b0a8ab13d6797881d5fef034d80b9713295","isMergeCommit":false,"messageTitle":"Add NFR and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":124,"deletions":26}}},{"hash":"55ef4303b55047d61b28d129540a81201b57c63f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-NFRs-\u0026-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c68716ae3d097704999c713952083edb7d8cdfdc","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":165,"deletions":123}}},{"hash":"386ef59a99406f6a4b9aa4b3026b2f2d030df248","isMergeCommit":false,"messageTitle":"Fix usecases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":65}}},{"hash":"ea6b86460a562fddd7029af4a6312e8da5d7df50","isMergeCommit":false,"messageTitle":"add fees, classid, monthspaid field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":303,"deletions":19},"test-code":{"insertions":38,"deletions":10}}}]},{"date":"2024-10-10","commitResults":[{"hash":"beb5b7b976f84f69678d1813eb5073b31be8d68e","isMergeCommit":false,"messageTitle":"Update extensions numbering","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d15f8e18b2362cce30fc75ed529abb3be97ef245","isMergeCommit":false,"messageTitle":"fixing some cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":32},"test-code":{"insertions":16,"deletions":23}}},{"hash":"68fec2f7dc1ab7618407d927ff3166bdd66318da","isMergeCommit":false,"messageTitle":"Fix more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":6,"deletions":1}}}]},{"date":"2024-10-13","commitResults":[{"hash":"9c0effbe06c3a454ba50cf1c92a561b616a68789","isMergeCommit":false,"messageTitle":"Fix code to conform to original implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":34},"test-code":{"insertions":17,"deletions":14}}},{"hash":"44e665373f3277b80a1cfcacf2f692ae3c70a9a6","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":2,"deletions":3}}},{"hash":"03467b739e10927d4c46da67deca55adfcd1c90e","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":14,"deletions":13}}}]},{"date":"2024-10-15","commitResults":[{"hash":"c08faa9c8a4c527230a5f773f7bcc3917d63c398","isMergeCommit":false,"messageTitle":"Update methods in Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":6},"test-code":{"insertions":10,"deletions":4}}},{"hash":"e77f8cd87b7165bdad53eb62a6d4e1b9ce965343","isMergeCommit":false,"messageTitle":"Add test cases, update Json files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":24,"deletions":21}}},{"hash":"fe49c4b0ac2ee388da0c69df32f18cd074846cf4","isMergeCommit":false,"messageTitle":"Add ClassIdTest class and FeesTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":114,"deletions":0}}},{"hash":"8b9c7811bf984d2587dd74a84b6d3274f61e55f2","isMergeCommit":false,"messageTitle":"Add test case to cover equals method for addCommandParse","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"5d95bafbe5793a73349cc55319a412c89893c8c5","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-16","commitResults":[{"hash":"969c8b716cb6acbc6fe28121462156cc7dd246af","isMergeCommit":false,"messageTitle":"Changed default fees to conform to test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"2c1e0bf79dc19a3a59dfbb0ff7e0ecd3bcc2362c","isMergeCommit":false,"messageTitle":"Change default fees to conform to test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"58db8e1b03699b375f692eee16e1bc2642d2e137","isMergeCommit":false,"messageTitle":"add test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-10-17","commitResults":[{"hash":"f43b3113c941414569f6e03ecbf662c2d70ec073","isMergeCommit":false,"messageTitle":"Remove debug statements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"c3cb27b97da0316d590ffd2d42908b083d91fe5e","isMergeCommit":false,"messageTitle":"Fix createEditedPerson method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"4a35a44a941fd9266e1657fd9822706f774e8841","isMergeCommit":false,"messageTitle":"Remove println statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"53bbb94c544d04d76ca13ae39f9c50450e8e1943","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-test-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"870e2d052417e03dd5a1ef34f6981bfce1c6555b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"07801aeb7007b13b7013a1d10bdd6552dbf6d8c4","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":1,"deletions":2}}}]}],"sumomomomomo":[{"date":"2024-09-27","commitResults":[{"hash":"06d5b0e0ebee4328e92e1eef3f4bd05e77b1a404","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e2600c41ad844f1e0535844dc8d434eea0a34efe","isMergeCommit":false,"messageTitle":"Add Matthew\u0027s info into AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"5511da3cbdcef691a68e94fa4cd820476d17d8ad","isMergeCommit":false,"messageTitle":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-09-30","commitResults":[{"hash":"a196d58a813ff35ad5272e505d0d392b5b712655","isMergeCommit":false,"messageTitle":"Edit product scope for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"d0302d3710aeff089a7423abe52ddb5609a07eeb","isMergeCommit":true,"messageTitle":"Merge pull request #57 from sumomomomomo/edit-product-scope","messageBody":"Edit product scope for DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"ede46bc993015209b6ce7c23888404787ca68036","isMergeCommit":false,"messageTitle":"Fix failing testcases","messageBody":"* Fix Fees, ClassId, MonthsPaid to have `String` type for `value`\n* Update Storage implementation - TODO: to decide if fees, classId, monthsPaid should be optional fields in json\n* Rollback some changes to add/edit commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":85},"test-code":{"insertions":69,"deletions":38}}},{"hash":"0549fc81415d1132cdd3f447fab8a933c7dd38d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T15-2:master\u0027 into branch-add-fees-classid-markpaid","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f6a724b6b0f9e1344111030f2bafe1756e083fe","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":9}}},{"hash":"fd7cc2b6b079a2661d8833b085c59c36f2897d62","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":17},"test-code":{"insertions":67,"deletions":1}}},{"hash":"857383488a5c0cd66d4d0266539d2907d2f8d073","isMergeCommit":false,"messageTitle":"Remove unused parser functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cce775888c57c76eb5cdfb54bd37884eab959b0b","isMergeCommit":true,"messageTitle":"Merge pull request #59 from sumomomomomo/branch-add-fees-classid-markpaid","messageBody":"Add fees, classId, monthsPaid fields","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"b0610eb21d21b87af2439a410e640c1756993692","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kienvumrpm/add-markpaid","messageBody":"Implement markpaid","fileTypesAndContributionMap":{}},{"hash":"2e96f0a95dbbbb753f3f132515ca57706fc1e545","isMergeCommit":false,"messageTitle":"Edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}}]},{"date":"2024-10-13","commitResults":[{"hash":"4ae67b4281af8365b1cee6c46be4a4c0f47165b2","isMergeCommit":false,"messageTitle":"Refactor FindCommandParser to use argMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":66},"test-code":{"insertions":19,"deletions":20}}},{"hash":"50a2d0499661b1a88b8a9025bc33dd2a9823523b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from hooyushing/branch-enhance-find","messageBody":"Implement find functionality: n/name and c/classId","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"ece3cb8a0178b0ec118275e2260321cee8b2c78b","isMergeCommit":false,"messageTitle":"Refactor MarkPaid","messageBody":"1. Rename: Markpaid -\u003e MarkPaid\n2. Refactor MonthsPaid -\u003e MonthPaid is singular, MonthsPaid is a collection of MonthPaid, similar to how Tag is implemented\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":95},"other":{"insertions":37,"deletions":32},"test-code":{"insertions":17,"deletions":13}}},{"hash":"ac2488ef278d7b41adfd7fc695878629e90d8042","isMergeCommit":false,"messageTitle":"Fix placeholder test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":9},"test-code":{"insertions":9,"deletions":15}}},{"hash":"ac00b855b9d4e3e6bede1becebb98ce9b14a9a69","isMergeCommit":false,"messageTitle":"Add tests for MarkPaidCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0},"test-code":{"insertions":93,"deletions":0}}},{"hash":"aae9cccea8d9c6fe045a8eec619296a32dac191a","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"8d93639059d8c24d530a245296f447034cdf1c08","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedMonthPaid","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":2}}}]},{"date":"2024-10-17","commitResults":[{"hash":"3eec5f6b3fc0d2ac52607a9886d417a1a3f56f1c","isMergeCommit":false,"messageTitle":"Add MarkPaidCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0},"test-code":{"insertions":76,"deletions":2}}},{"hash":"862c58313c0644ea22c75276503de3e1b4a6174c","isMergeCommit":false,"messageTitle":"Add MonthPaidTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":13},"test-code":{"insertions":26,"deletions":0}}}]}],"hooyushing":[{"date":"2024-09-21","commitResults":[{"hash":"b5b865bae6bcf4e6c7e5c138f393becd27f53152","isMergeCommit":true,"messageTitle":"Merge pull request #5 from hooyushing/branch-add-photo","messageBody":"Add picture","fileTypesAndContributionMap":{}}]},{"date":"2024-09-27","commitResults":[{"hash":"402d117f29a9b083260c78caeac615884294ae16","isMergeCommit":true,"messageTitle":"Merge pull request #12 from waihin26/add-waihin-photo","messageBody":"Add profile photo","fileTypesAndContributionMap":{}},{"hash":"9b0085d2752761aa61337f834c5310fa4c68916e","isMergeCommit":true,"messageTitle":"Merge pull request #13 from sumomomomomo/add-matthew-photo","messageBody":"Add Matthew\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"bef3eeee6ab47a942bad906cc76aac8c842d28bb","isMergeCommit":true,"messageTitle":"Merge pull request #14 from munhuikim/add-munhui-photo","messageBody":"Add Munhui\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"4346ed65a063782fd3a09feb74e50d91152811a7","isMergeCommit":false,"messageTitle":"Add personal description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"27a4427c4343c91267fa6a9fa6e7991b5b03e166","isMergeCommit":true,"messageTitle":"Merge pull request #19 from hooyushing/branch-about-us","messageBody":"Add personal description","fileTypesAndContributionMap":{}},{"hash":"580ae50208708b792b1e4c49f5956193f3c5d38d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from sumomomomomo/edit-aboutus","messageBody":"Add Matthew\u0027s info into AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"389fa904ae0953001e4e06dd9ed65dee7863d2ce","isMergeCommit":true,"messageTitle":"Merge pull request #21 from waihin26/edit-aboutUs","messageBody":"Add about us message for Wai Hin","fileTypesAndContributionMap":{}},{"hash":"200e7edff8c7953ec13d9fa37ffc00c7e2cd37bf","isMergeCommit":true,"messageTitle":"Merge pull request #26 from munhuikim/branch-munhui-profile","messageBody":"Add information about munhuikim","fileTypesAndContributionMap":{}},{"hash":"3ce3268dfd0ac763d9c61e1191ff49047fa8c3f2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kienvumrpm/add-about-kien","messageBody":"add about Kien","fileTypesAndContributionMap":{}},{"hash":"a4bae6ce65d898236c7a3d6767610e02c03a6b13","isMergeCommit":true,"messageTitle":"Merge pull request #29 from munhuikim/branch-munhui-profile","messageBody":"Add image link for munhui","fileTypesAndContributionMap":{}},{"hash":"495d700e3c321fec5257f9898726fdfbc7396f0b","isMergeCommit":true,"messageTitle":"Merge pull request #31 from sumomomomomo/edit-aboutus","messageBody":"Rename matthew.png to sumomomomomo.png; edit AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"5710476c47370a2bc7f77803c7e668bb2e36442d","isMergeCommit":false,"messageTitle":"Add ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"3e71d65167c0230f128fa3265bae0617ee51f8d9","isMergeCommit":false,"messageTitle":"Add emoji","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"dfe6b6abc6d27ff013cdff29f40fac614e854878","isMergeCommit":true,"messageTitle":"Merge pull request #35 from hooyushing/branch-README","messageBody":"Add ReadMe","fileTypesAndContributionMap":{}},{"hash":"ed2ffea0971983bb0799925f464c2b8c8d7fc640","isMergeCommit":true,"messageTitle":"Merge pull request #36 from sumomomomomo/edit-ui-png","messageBody":"Edit Ui.png","fileTypesAndContributionMap":{}},{"hash":"3be5bd66243a539056a9d14e2e572a0313281a26","isMergeCommit":false,"messageTitle":"Add site-wide change","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"51f7b3970b89b55adffff5deba27f414964a76f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from hooyushing/branch-config","messageBody":"Add site-wide change","fileTypesAndContributionMap":{}},{"hash":"1b2c5789fc3a6b8fb5ab14287745cd7c33d1f167","isMergeCommit":true,"messageTitle":"Merge pull request #40 from munhuikim/branch-user-stories","messageBody":"Add user stories and glossary","fileTypesAndContributionMap":{}},{"hash":"d00a2a0132ad9e1548f56f75792e20c9253e5eea","isMergeCommit":true,"messageTitle":"Merge pull request #41 from waihin26/add-NFRs-\u0026-use-cases","messageBody":"Add NFR and use cases","fileTypesAndContributionMap":{}},{"hash":"52cb337e0f9aa47771b426c203dadbf8e829051a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from waihin26/branch-hi","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"02ebd1bb6870d924a495c75a2c36d8c007717312","isMergeCommit":false,"messageTitle":"Change find command to follow format","messageBody":"Add fuzzy search through regex\n","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":5},"test-code":{"insertions":3,"deletions":3}}},{"hash":"c376c7234537c1321f707c7cae6a92b7bf4d7393","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"710b787c6315f143d61012f0ed6bafcb55f72de8","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1f8e2f022c4e1eb09a8a62e8e7fb7093e293e111","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"9fbc4ab9db4abc11ac77b1a0ea48ae899214fbef","isMergeCommit":false,"messageTitle":"Edit style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"83050ca0a3eab434fded25bcb59fbce6443daf50","isMergeCommit":false,"messageTitle":"Add find to support prefix n/","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":20}}},{"hash":"ecc280b74530b59c3b14408e7e6746d977fa24a6","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"fdc766e0f5a9f6c6b7dec4687c0e7df04599ed86","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"2d04c037fa22adf9352de40bbd2c7dc5b35225e4","isMergeCommit":true,"messageTitle":"Merge pull request #54 from hooyushing/branch-add-find","messageBody":"Change find command to follow format","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0ccfa2b64089ba65d7ac3a9959f7e5f6f31f24a2","isMergeCommit":false,"messageTitle":"Add find by classid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":7},"test-code":{"insertions":21,"deletions":0}}},{"hash":"ce3e0f44a64aed4676f816417febf6049369e5cf","isMergeCommit":false,"messageTitle":"Change style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":4,"deletions":3}}},{"hash":"284bb671966c49fd436dc1383061c6b674dd3522","isMergeCommit":false,"messageTitle":"Add test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":16,"deletions":1}}},{"hash":"dc081331927c2b814e09d64b9ab0a83ea75026ad","isMergeCommit":true,"messageTitle":"Merge pull request #64 from hooyushing/branch-add-find-class","messageBody":"Add find by classid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"f76d03396c92339b98d082d98dafe016d4c05406","isMergeCommit":false,"messageTitle":"Update comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"f8835932735e71329a84a517fd7249eb482f009e","isMergeCommit":true,"messageTitle":"Merge pull request #66 from hooyushing/branch-add-find-class","messageBody":"Update comment","fileTypesAndContributionMap":{}},{"hash":"9ca0689201bc30cc4869916910b3d50a8a47459f","isMergeCommit":true,"messageTitle":"Merge pull request #68 from waihin26/fix-extension-numbers","messageBody":"Update extensions numbering","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"e2dc0479056568f84fdb409d38599ed0ef33d201","isMergeCommit":true,"messageTitle":"Merge pull request #74 from sumomomomomo/edit-comments-markpaid","messageBody":"Edit comments for markpaid","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"11513071de21b79f5bc575d9d734e72bf2128a2f","isMergeCommit":false,"messageTitle":"Add enhancement to find","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":4},"test-code":{"insertions":123,"deletions":0}}},{"hash":"28484cc833c4e7f0745a2d7e99c3885f860afb3a","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":99,"deletions":0}}},{"hash":"97e3e7eb91f1a329afe5d516ecb3aa931318fbd7","isMergeCommit":false,"messageTitle":"Fixed parser support","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2},"test-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"cdb6fdbdabdc65ff5ff29841b671674e58ec7632","isMergeCommit":true,"messageTitle":"Merge pull request #67 from munhuikim/branch-add","messageBody":"Add classId field and fees field in the AddCommand","fileTypesAndContributionMap":{}},{"hash":"3584b0368f2f86938514b23184dc106e53f9f47a","isMergeCommit":false,"messageTitle":"Abstract certain methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":49},"test-code":{"insertions":20,"deletions":20}}},{"hash":"dccb69a779e614206e2a1f8f06f689a1cd9331be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-enhance-find","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cbcce0b7f2f47292da6c293882d2cd38c2bbaa20","isMergeCommit":false,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"33601e9ed86388eb6d63b4337afde8d1d4c6731f","isMergeCommit":false,"messageTitle":"Update test method name","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":20}}},{"hash":"08834dcda52846cfa93c8b668aebe074b1b39d9d","isMergeCommit":false,"messageTitle":"Change invalid message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"0f37bab4ef4b008a8718810bd1bbfc8c3b3aa42d","isMergeCommit":true,"messageTitle":"Merge pull request #1 from sumomomomomo/branch-enhance-find","messageBody":"Refactor FindCommandParser to use argMultimap","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"0992fd3f43f5396d9db1eb345791fe360f6b95c7","isMergeCommit":true,"messageTitle":"Merge pull request #79 from waihin26/conforming-to-conventions","messageBody":"Fix code to conform to original implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"97ea2bd92664d3ddc0a662a030ca5b11db82ca6a","isMergeCommit":true,"messageTitle":"Merge pull request #82 from sumomomomomo/add-markpaid-parser","messageBody":"Implement MarkPaid","fileTypesAndContributionMap":{}},{"hash":"6660a375f4e2d1f096abaf945aff1412cc31a2cd","isMergeCommit":true,"messageTitle":"Merge pull request #81 from waihin26/add-test-cases","messageBody":"Add test cases","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}],"munhuikim":[{"date":"2024-09-27","commitResults":[{"hash":"2a9b5d366f161c73af672fa6e4803b6eb6e8e79f","isMergeCommit":false,"messageTitle":"Add information about munhuikim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7f4461ac47928942421924a3d1e6002435c7ba66","isMergeCommit":false,"messageTitle":"Add roles and responsibilities for munhui kim","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6e3335e6c028ca3f13f2b65a7f1f4ecf314bb55e","isMergeCommit":false,"messageTitle":"Add image link for munhui","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dcd023fb14e8549bbba53b54ff99d756d2f4f56","isMergeCommit":false,"messageTitle":"Add user stories and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":37}}}]},{"date":"2024-10-10","commitResults":[{"hash":"9a3356328c40a0394964086b192037ae5d2b1541","isMergeCommit":false,"messageTitle":"Add classId field and fees field in the AddCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":38}}},{"hash":"78185ec4987175551cb28a8e3d7bbbcab31811e4","isMergeCommit":false,"messageTitle":"Correct failing tests in LogicManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":41},"test-code":{"insertions":152,"deletions":136}}}]},{"date":"2024-10-11","commitResults":[{"hash":"238ca6ced0260906fd03a274014b95dc79d84aa3","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":40},"test-code":{"insertions":173,"deletions":68}}}]},{"date":"2024-10-12","commitResults":[{"hash":"2e9fce48101c5b83dc7d294e1dcbf36dcf1541a2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103T-T15-2/fixingOneTestCase","messageBody":"Fix test case","fileTypesAndContributionMap":{}}]}],"kienvumrpm":[{"date":"2024-09-27","commitResults":[{"hash":"765aed049a057361af443bb3b6f7f8cc95b66abb","isMergeCommit":false,"messageTitle":"add about Kien","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"18aeae7d322eddfef51eaed57474ddd6a8f619cc","isMergeCommit":false,"messageTitle":"Add role and responsilibities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"11a0a7a1a210070fff76b18000aeab13b6521bf6","isMergeCommit":false,"messageTitle":"Implement markpaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":2}}},{"hash":"c2b2e0fdd6c00440256828643ccecca70da24920","isMergeCommit":false,"messageTitle":"Change line break format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":90}}},{"hash":"c8639c991f45e672996fb600f5837a101b0bcc04","isMergeCommit":false,"messageTitle":"Add parser support for markpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":9}}},{"hash":"9c7ec68c619105ab4823f62a33be4b98725e9190","isMergeCommit":false,"messageTitle":"Fix line breakers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":37}}}]},{"date":"2024-10-15","commitResults":[{"hash":"66fe669cf887b6ffac7667ed5a2a1080f9147008","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-markpaid-parser","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"waihin26":{"docs":119,"functional-code":216,"test-code":192},"sumomomomomo":{"docs":15,"functional-code":339,"test-code":349},"hooyushing":{"docs":11,"functional-code":195,"test-code":276,"other":2},"munhuikim":{"docs":16,"functional-code":87,"test-code":124},"kienvumrpm":{"docs":4,"functional-code":81,"test-code":0}},"authorContributionVariance":{"waihin26":29539.5,"sumomomomomo":16730.55,"hooyushing":6616.2896,"munhuikim":12453.279,"kienvumrpm":6479.1235},"authorDisplayNameMap":{"waihin26":"CS2103T-T15-2 WONG.. HIN","sumomomomomo":"CS2103T-T15-2 MATT.. HAO","hooyushing":"CS2103T-T15-2 HOO ..HING","munhuikim":"CS2103T-T15-2 KIM ..NHUI","kienvumrpm":"CS2103T-T15-2 VU H..KIEN"}} diff --git a/AY2425S1-CS2103T-T16-2_tp_master/authorship.json b/AY2425S1-CS2103T-T16-2_tp_master/authorship.json index e1b64e6b..32ee0e01 100644 --- a/AY2425S1-CS2103T-T16-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T16-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"* This is **ClientGrid**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * as a one stop e-book for property agents to store the contacts of clients and their relevant descriptions","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"* For the detailed documentation of this project, see the **[ClientGrid Product Website](https://ay2425s1-cs2103t-t16-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"thony-ui":1,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.4.0\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"You can reach us at our emails: ","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"- `E1113234@u.nus.edu.sg`","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"- `kheehou.yong@u.nus.edu`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"- `e1113214@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"- `e1155920@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"- `tan_shixin@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"### Tan Shi Xin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":"\u003cimg src\u003d\"images/apollo-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"[[github](http://github.com/apollo-tan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"* Role: Project Advisor. Handle the list feature and its documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"### Anthony Hermanto","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":"![Anthony picture](./images/thony-ui.png)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"[[github](https://github.com/thony-ui)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"[[portfolio](https://www.anthonyhermanto.com)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"* Responsibilities: Manage the team. Handle the logic for delete commands. (delete buyer and delete seller)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"### Yong Khee Hou","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"![Khee Hou picture](./images/yongkheehou.png)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"[[github](https://github.com/yongkheehou)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: Ensure well-maintained documentation for the project. Handle command to add clients (buyers/ sellers).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"### Hrishiraj Mandal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"\u003cimg src\u003d\"images/virusrwj223.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"[[github](https://github.com/Virusrwj223)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"[[portfolio](https://virusrwj223.github.io/hm)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"[[linkedin](https://www.linkedin.com/in/hrishiraj-mandal)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"* Role: Tester","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time. Handle add property to database","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"### Wee Zhuo Lin","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"\u003cimg src\u003d\"images/jolwnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"[[GitHub](https://github.com/jolwnn)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"[[portfolio](https://jolynn-wee.vercel.app)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"* Role: Integration","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"* the software to create a whole. Handle delete property commands and documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":19,"Virusrwj223":7,"apollo-tan":5,"thony-ui":7,"-":60}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"thony-ui"},"content":"* Real estate agent who needs to manage a significant number of clients and properties.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"thony-ui"},"content":"* prefer desktop apps over other types.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"thony-ui"},"content":"* can type fast.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"thony-ui"},"content":"* prefers typing to mouse interactions.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"thony-ui"},"content":"* is reasonably comfortable using CLI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"thony-ui"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an address book designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor properties the agent is in charge of while maintaining core address book functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":"|----------|-------------------|------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"yongkheehou"},"content":"| `* * *` | real estate agent | add a new client (buyer or seller) to ClientGrid | keep all their contact information organized in one place","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | delete a client (buyer or seller) from ClientGrid | keep all their contact information organized in one place |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | add new properties to client grid | keep track of my client\u0027s property details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jolwnn"},"content":"| `* * *` | real estate agent | delete a property entry from ClientGrid | remove entries that I no longer need |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about properties | easily manage my portfolio of available properties |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about buyers | match buyers with suitable properties based on their preferences |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about sellers | manage relationships and property listings efficiently |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a buyer wants to buy property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a seller wants to sell property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"yongkheehou"},"content":"(For all use cases below, the **System** is the `ClientGrid` and the **Actor** is the `real estate agent`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Use case: UC1 - Add Client (Buyer or Seller)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"1. Real estate agent requests to add a buyer/ seller to ClientGrid and passes in the buyer/ seller\u0027s name, phone number and email.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"yongkheehou"},"content":"2. ClientGrid will add the buyer/ seller with the name, phone number, and email specified by the real estate agent.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"yongkheehou"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the name/ phone number/ email format provided by the real estate agent.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"yongkheehou"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"thony-ui"},"content":"**Use case: UC2 - Delete Client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"thony-ui"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"thony-ui"},"content":"1. Real estate agent requests to delete a buyer or seller based on their phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"thony-ui"},"content":"2. ClientGrid will delete the respective client based on the phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the phone number format provided by the real estate agent .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Virusrwj223"},"content":"**Use case: UC3 - Add a property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Virusrwj223"},"content":"1. User inputs details of property","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"yongkheehou"},"content":"2. System outputs success message","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Virusrwj223"},"content":"* 1a. Invalid command detail symbols","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Virusrwj223"},"content":" * 1a1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"thony-ui"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Virusrwj223"},"content":"* 1b. Postal code number contains invalid symbols and format typical in Singapore","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Virusrwj223"},"content":" * 1b1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Virusrwj223"},"content":"* 1c. Unit number contains invalid symbols and format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Virusrwj223"},"content":" * 1c1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"jolwnn"},"content":"**Use case: UC4 - Delete Property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"jolwnn"},"content":"Guarantees:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jolwnn"},"content":"* If property listing was in the database originally, it would be removed from property database with no side effects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jolwnn"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jolwnn"},"content":"1. Real estate agent requests to delete a property listing based on the property’s postal code and unit number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jolwnn"},"content":"2. ClientGrid will delete the respective property listing and indicate success.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the postal code or unit number format provided by the real estate agent, .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"yongkheehou"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"yongkheehou"},"content":"* 1b. ClientGrid is unable to find a matching property listing entry in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"yongkheehou"},"content":" * 1b1. ClientGrid informs real estate agent that the property listing does not exist in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"yongkheehou"},"content":" * Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"thony-ui"},"content":"**Use case: UC5 - List buyers, sellers, clients or properties**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"apollo-tan"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"apollo-tan"},"content":"1. Real Estate Agent requests to view a list of buyers, sellers, clients or properties","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"apollo-tan"},"content":"2. ClientGrid will respond with the corresponding list","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"thony-ui"},"content":"Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"yongkheehou"},"content":"2. Should be able to hold up to 1000 clients and 500 properties without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"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","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"yongkheehou"},"content":"4. The client and property databases should be updated after every command successfully executed by ClientGrid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Virusrwj223"},"content":"5. Should be able to handle case of corrupted file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"yongkheehou"},"content":"* **Clients**: Buyers or Sellers of properties the real estate agent is managing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Virusrwj223"},"content":"* **Corrupted file**: Missing file and invalid data","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"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","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"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","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":31,"jolwnn":17,"Virusrwj223":16,"apollo-tan":9,"thony-ui":34,"-":376}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"# Client Grid User guide","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an **address book** designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor the buying or selling process while maintaining core address book functionality.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"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","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" * `list k/clients` : Lists all clients.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" * `addbuyer n/John p/12345678 e/john@gmail.com` : Adds a buyer whose name is `John`, phone number is `12345678` and email is `john@gmail.com`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * `deletebuyer p/81234567` : Deletes the buyer with contact number `81234567`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * `addproperty c/124894 u/15-20` : Adds a property with postal code 124894 and unit number #15-20.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" * `deleteproperty c/124894 u/15-20` : Deletes the property with postal code 124894 and unit number #15-20.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":69,"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","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples: ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"apollo-tan"},"content":"### Listing address book records: `list`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"apollo-tan"},"content":"Shows a list of all existing properties, sellers, buyers, or clients in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"apollo-tan"},"content":"Format: `list k/KEY`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"apollo-tan"},"content":"* The `list` command displays records based on the specified `KEY`. ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"apollo-tan"},"content":"* The `KEY` must be one of the following: `properties`, `buyers`, `sellers`, or `clients`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"apollo-tan"},"content":" * `buyers`: Lists all buyers in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"apollo-tan"},"content":" * `sellers`: Lists all sellers in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"apollo-tan"},"content":" * `clients`: Lists all buyers and sellers (i.e. clients) combined.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"apollo-tan"},"content":" * `properties`: Lists all properties in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"apollo-tan"},"content":"* If an invalid `KEY` is provided, an error message will be displayed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"apollo-tan"},"content":"Key Considerations:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"apollo-tan"},"content":"* Only accepts \"properties\", \"buyers\", \"sellers\", and \"clients\" (case insensitive) as valid inputs for `k/KEY`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":"* The `KEY` ignores extra/leading/trailing spaces. Extra/leading/trailing spaces will be trimmed and the name will be converted into an array of words. The `KEY` also ignores UPPER/lower case. All names will be converted to lower case and checked against the list of valid keys.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"apollo-tan"},"content":"* If the user provides an invalid key, the system will respond with an error message indicating that only the valid keys are accepted.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jolwnn"},"content":"* `list k/buyers` displays a list of all existing buyers in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" ![result for \u0027list k/sellers\u0027](images/list.png)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":"### Adding a buyer : `addbuyer`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jolwnn"},"content":"Add a specified buyer into the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":"Format: `addbuyer n/BUYER_NAME p/BUYER_PHONE_NUMBER e/BUYER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":"* Adds a buyer with the specified `BUYER_NAME`, `BUYER_PHONE_NUMBER`, and `BUYER_EMAIL`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jolwnn"},"content":"* The `BUYER_NAME` ignores extra/leading/trailing spaces. Extra/leading/trailing spaces will be trimmed and the name will be converted into an array of words. The `BUYER_NAME` also ignores UPPER/lower case. All names will be converted to lower case and checked against the in-memory database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jolwnn"},"content":"* The `BUYER_PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"* The `BUYER_EMAIL` should follow the format local-part@domain and adhere to the following constraints: The local-part must consist only of alphanumeric characters and allowed special characters, with no special characters at the beginning or end. After the local-part, there must be an \u0027@\u0027 followed by the domain name. The domain name consists of domain labels separated by periods. Each domain label must start and end with an alphanumeric character and may contain hyphens in between. Additionally, the domain must end with a domain label that is at least two characters long.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"Examples:","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"* `addbuyer n/John p/83456789 e/john@gmail.com` adds a buyer whose name is `John`, phone number is `83456789` and email is `john@gmail.com`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Virusrwj223"},"content":" ![result for \u0027addbuyer n/John p/83456789 e/john@gmail.com\u0027](images/addbuyer.png)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":"### Adding a seller : `addseller`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jolwnn"},"content":"Add a specified seller into the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":"Format: `addseller n/SELLER_NAME p/SELLER_PHONE_NUMBER e/SELLER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":"* Adds a seller with the specified `SELLER_NAME`, `SELLER_PHONE_NUMBER`, and `SELLER_EMAIL`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jolwnn"},"content":"* The `SELLER_NAME` ignores extra/leading/trailing spaces. Extra/leading/trailing spaces will be trimmed and the name will be converted into an array of words. The `SELLER_NAME` also ignores UPPER/lower case. All names will be converted to lower case and checked against the in-memory database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jolwnn"},"content":"* The `SELLER_PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":"* The `SELLER_EMAIL` should follow the format local-part@domain and adhere to the following constraints: The local-part must consist only of alphanumeric characters and allowed special characters, with no special characters at the beginning or end. After the local-part, there must be an \u0027@\u0027 followed by the domain name. The domain name consists of domain labels separated by periods. Each domain label must start and end with an alphanumeric character and may contain hyphens in between. Additionally, the domain must end with a domain label that is at least two characters long.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":"Examples:","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":"* `addseller n/Mary p/83456789 e/mary@gmail.com` adds a seller whose name is `Mary`, phone number is `83456789` and email is `mary@gmail.com`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Virusrwj223"},"content":" ![result for \u0027addseller n/Mary p/83456789 e/mary@gmail.com\u0027](images/addseller.png)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"thony-ui"},"content":"### Deleting a buyer : `deletebuyer`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jolwnn"},"content":"Deletes the specified buyer from the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"thony-ui"},"content":"Format: `deletebuyer p/PHONE_NUMBER`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"thony-ui"},"content":"* Deletes the buyer with the specified `PHONE_NUMBER`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jolwnn"},"content":"* The `PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"thony-ui"},"content":"* `deletebuyer p/94351253` deletes the buyer with phone number `94351253` from the client book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"thony-ui"},"content":" ![result for \u0027deletebuyer p/94351253\u0027](images/deletebuyer.png)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"thony-ui"},"content":"### Deleting a seller : `deleteseller`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"jolwnn"},"content":"Deletes the specified seller from the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"thony-ui"},"content":"Format: `deleteseller p/PHONE_NUMBER`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"thony-ui"},"content":"* Deletes the seller with the specified `PHONE_NUMBER`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"jolwnn"},"content":"* The `PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"thony-ui"},"content":"* `deleteseller p/98765432` deletes the seller with phone number `98765432` from the client book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"thony-ui"},"content":" ![result for \u0027deleteseller p/98765432\u0027](images/deleteseller.png)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":"### Adding a property : `addproperty`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"jolwnn"},"content":"Add a specified property into the property book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":"Format: `addproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":"* Adds a property with the specified `POSTAL_CODE` and `UNIT_NUMBER`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"jolwnn"},"content":"* The `POSTAL_CODE` must be exactly 6 digits with each digit in the range [0-9]. It does not accept any non-integer characters or spaces.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"jolwnn"},"content":"* The `UNIT_NUMBER` comprises of two numbers delimited by exactly one dash(-). On either side of the dash are numbers comprising of two or more digits. The range of numbers of the left hand side of the dash is [00-148] and the right hand side is [00-111110]. Other than the dash, other non-integer characters or spaces are not accepted.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":"Examples:","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"jolwnn"},"content":"* `addproperty c/124894 u/15-20` adds a property with postal code `124894` and unit number `15-20`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" ![result for \u0027addproperty c/124894 u/15-20\u0027](images/addproperty.png)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"jolwnn"},"content":"### Deleting a property : `deleteproperty`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"jolwnn"},"content":"Deletes a specified property from the property book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"jolwnn"},"content":"Format: `deleteproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"jolwnn"},"content":"* Deletes a property with the specified `POSTAL_CODE` and `UNIT_NUMBER`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"jolwnn"},"content":"* The `POSTAL_CODE` must be exactly 6 digits with each digit in the range [0-9]. It does not accept any non-integer characters or spaces.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"jolwnn"},"content":"* The `UNIT_NUMBER` comprises of two numbers delimited by exactly one dash(-). On either side of the dash are numbers comprising of two or more digits. The range of numbers of the left hand side of the dash is [00-148] and the right hand side is [00-111110]. Other than the dash, other non-integer characters or spaces are not accepted.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"jolwnn"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"jolwnn"},"content":"* `deleteproperty c/124894 u/15-20` deletes a property with postal code `124894` and unit number `15-20`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"jolwnn"},"content":" ![result for \u0027deleteproperty c/124894 u/15-20\u0027](images/deleteproperty.png)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"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","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":271,"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","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":276,"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","isFullCredit":false},{"lineNumber":277,"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","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"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","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":295,"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","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":304,"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","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"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","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"apollo-tan"},"content":"**List** | `list k/KEY`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Add Buyer** | `addbuyer n/BUYER_NAME p/BUYER_PHONE_NUMBER e/BUYER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"yongkheehou"},"content":"**Add Seller** | `addseller n/SELLER_NAME p/SELLER_PHONE_NUMBER e/SELLER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"**Delete Buyer** | `deletebuyer p/PHONE_NUMBER`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"**Delete Seller** | `deleteseller p/PHONE_NUMBER`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Virusrwj223"},"content":"**Add Property** | `addproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"**Delete Property** | `deleteproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"jolwnn":34,"yongkheehou":28,"Virusrwj223":17,"apollo-tan":27,"thony-ui":16,"-":195}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eClientGrid\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-T16-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"thony-ui":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# ClientGrid","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"**ClientGrid 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-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"* If you are interested in using ClientGrid, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"* If you are interested about developing ClientGrid, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"* This project is based on the ClientGrid-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"thony-ui":3,"-":15}},{"path":"setup-hooks.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"#!/bin/sh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"# Copy pre-commit hook to the .git/hooks directory","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"cp hooks/pre-commit .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# Make the pre-commit hook executable","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"chmod +x .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"echo \"Git hooks installed.\"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"thony-ui":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.ClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.PropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage \u003d new JsonPropertyBookStorage(userPrefs.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(userPrefs.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage, clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"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","isFullCredit":false},{"lineNumber":83,"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e propertyBookOptional;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e clientBookOptional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook initialPropertyData;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook initialClientData;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" propertyBookOptional \u003d storage.readPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" if (!propertyBookOptional.isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d propertyBookOptional.orElseGet(SampleDataUtil::getSamplePropertyBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" logger.warning(\"Data file at \" + storage.getPropertyBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" + \" Will be starting with an empty PropertyBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" clientBookOptional \u003d storage.readClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" if (!clientBookOptional.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Creating a new client data file \" + storage.getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" + \" populated with a sample ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d clientBookOptional.orElseGet(SampleDataUtil::getSampleClientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" System.out.println(initialClientData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" logger.warning(\"Data file at \" + storage.getClientBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" + \" Will be starting with an empty ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" return new ModelManager(initialData, userPrefs, initialPropertyData, initialClientData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":22,"-":184}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" * Returns an unmodifiable view of the filtered list of persons","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" * Returns an unmodifiable view of the filtered list of clients (containing both buyers and sellers)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" ObservableList\u003cProperty\u003e getFilteredPropertyList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":3,"apollo-tan":13,"-":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" storage.saveClientBook(model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" storage.savePropertyBook(model.getPropertyBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" public ObservableList\u003cProperty\u003e getFilteredPropertyList() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" return model.getFilteredPropertyList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"apollo-tan"},"content":" public BooleanProperty getIsDisplayClientsProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"apollo-tan"},"content":" return model.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":1,"apollo-tan":13,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.LinkedHashSet;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .sorted() // Sorting the strings","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .collect(Collectors.toCollection(LinkedHashSet::new)); // To maintain the sorted order","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public static String format(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" builder.append(client instanceof Buyer ? ClientTypes.BUYER.toString() + \"; \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" : ClientTypes.SELLER.toString() + \"; \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" .append(client.getName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .append(client.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" * Formats the {@code property} for display to the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public static String format(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" builder.append(\"PostalCode: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getPostalCode())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .append(\"; Unit: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getUnit());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" return builder.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":12,"Virusrwj223":13,"thony-ui":9,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Buyer} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and utilizes its functionality to add a specific type of client: {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddBuyerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addbuyer\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addbuyer command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a buyer to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new buyer, with a placeholder for the buyer\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_BUYER \u003d \"New buyer added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate buyer. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_BUYER \u003d \"This buyer already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddBuyerCommand} to add the specified {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param buyer The {@code Buyer} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand(Buyer buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the buyer to the model if the buyer does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the buyer was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the buyer already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd) \u0026\u0026 toAdd instanceof Buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_BUYER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddBuyerCommand instances and their buyer clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddBuyerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand otherAddCommand \u003d (AddBuyerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Represents an abstract command to add a {@link Client} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This class is designed to be extended by specific commands that add different types of clients,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * such as buyers or sellers.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public abstract class AddClientCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * A string describing the expected parameters for adding a client.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Includes name, phone number, and email.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_PARAMETERS \u003d PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_EMAIL + \"EMAIL\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /** The client to be added to the address book. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" protected final Client toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddClientCommand} to add the specified {@code Client}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * @param client The client to be added. Must not be null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.toAdd \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of this AddClientCommand, showing the client to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The string is generated using {@link ToStringBuilder}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @return A string representation of the AddClientCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":51}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Adds a {@code Property} to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * Extends {@link AddPropertyCommand} and uses its functionality to add a specific type of property: {@code Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public static final String COMMAND_WORD \u003d \"addproperty\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_POSTALCODE + \"POSTALCODE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + \"UNIT \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This property already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private final Property toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" toAdd \u003d property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Executes the AddPropertyCommand.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Adds the property to the model if the property does not already exist in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @return A {@link CommandResult} with a success message if the property was added.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (model.hasProperty(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" model.addProperty(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof AddPropertyCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand otherAddCommand \u003d (AddPropertyCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/logic/commands/AddSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Seller} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and uses its functionality to add a specific type of client: {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddSellerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addseller\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addseller command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a seller to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new seller, with a placeholder for the seller\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_SELLER \u003d \"New seller added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate seller. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_SELLER \u003d \"This seller already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddSellerCommand} to add the specified {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param seller The {@code Seller} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand(Seller seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the seller to the model if the seller does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the seller was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (toAdd instanceof Seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_SELLER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddSellerCommand instances and their seller clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddSellerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand otherAddCommand \u003d (AddSellerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a buyer in the buyer management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deletebuyer\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the buyer identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Buyer: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteBuyerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete buyer command and removes the buyer from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Buyer not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteBuyerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteBuyerCommand} with the same phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteBuyerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand d \u003d (DeleteBuyerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":75}},{"path":"src/main/java/seedu/address/logic/commands/DeletePropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" * Deletes a property using its postal code and unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" public static final String COMMAND_WORD \u003d \"deleteproperty\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" + \": Deletes the property unit identified by its postal code and unit number.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"POSTAL_CODE (must follow the Singapore postal code format i.e. be a 6 digit integer \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" + \"between 000000 to 999999) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"UNIT_NUMBER (in the format XXX-XXX) \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"118420 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"08-08 \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_DELETE_PROPERTY_SUCCESS \u003d \"Deleted property: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" private final Unit unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * Constructs a {@code DeletePropertyCommand} with the specified postal code and unit number to delete a property.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" * @param postalCode The postal code of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" * @param unitNumber The unit number of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand(PostalCode postalCode, Unit unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" Property propertyToDelete \u003d model.getFilteredPropertyList().stream()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" .filter(property -\u003e property.getPostalCode().equals(postalCode)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 property.getUnit().equals(unitNumber))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" .findFirst().orElseThrow(() -\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" new CommandException(String.format(\"Property not found. \", postalCode,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" unitNumber)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" model.deleteProperty(propertyToDelete);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PROPERTY_SUCCESS, Messages.format(propertyToDelete)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" if (!(other instanceof DeletePropertyCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand otherDeletePropertyCommand \u003d (DeletePropertyCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":" return postalCode.equals(otherDeletePropertyCommand.postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 unitNumber.equals(otherDeletePropertyCommand.unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":" .add(\"unitNumber\", unitNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jolwnn"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":85}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a seller in the seller management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deleteseller\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the seller identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Seller: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteSellerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete seller command and removes the seller from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Seller not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteSellerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteSellerCommand} with the same phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteSellerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand d \u003d (DeleteSellerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":74}},{"path":"src/main/java/seedu/address/logic/commands/ListBuyersCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Lists all buyers in the client list to the user.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListBuyersCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"buyers\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all buyers in the client list and sets the display to show clients.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * @param model The model which contains the client data.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * @return A CommandResult containing feedback to the user that all buyers have been listed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" // Logic to list buyers","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" model.updateFilteredClientList(Model.PREDICATE_SHOW_ALL_BUYERS_ONLY);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":28}},{"path":"src/main/java/seedu/address/logic/commands/ListClientsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Lists all clients (both buyers and sellers) in the client list to the user.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListClientsCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"clients\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all clients (buyers and sellers) and sets the display to show clients.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * @param model The model which contains the client data.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * @return A CommandResult containing feedback to the user that all clients have been listed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" // Logic to list clients (i.e. buyers and sellers)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" model.updateFilteredClientList(Model.PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":28}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":" * Abstract class that serves as the base for commands to list different entities in the application","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":" * (such as buyers, sellers, clients, and properties). Subclasses of {@code ListCommand} are","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * responsible for specifying which entities are to be listed and implementing the listing logic.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public abstract class ListCommand extends Command {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * The main command word used to trigger the list functionality in the application.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * Usage message to guide users on how to use the \u0027list\u0027 command. It provides examples of listing","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * buyers, sellers, clients, or properties from the database, and clarifies the allowed keys.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all existing properties, sellers, \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" + \"buyers, or clients in the database.\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" + \"Command format: \" + COMMAND_WORD + \" k/KEY\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" + \"Example commands:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" + \"1. List all the buyers: \" + COMMAND_WORD + \" k/buyers\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" + \"2. List all the properties: \" + COMMAND_WORD + \" k/properties\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" + \"Parameter considerations:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" + \"The key must be one of the following: \\\"buyers\\\", \\\"sellers\\\", \\\"clients\\\", or \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" + \"\\\"properties\\\".\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" + \"Only these four types of records are stored in the database.\\n\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" * Success message template used to confirm that the listing operation has been successfully executed","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" * for a specific type of entity. The placeholder will be replaced with the type of entity listed","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" * (e.g., buyers, sellers, clients, or properties).","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" * Executes the list command to retrieve and display a specific category of records from the model.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" * @param model The {@code Model} which contains the application\u0027s data and logic for filtering","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" * and retrieving records.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code CommandResult} containing the feedback message for the user after the command is executed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" public abstract CommandResult execute(Model model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"apollo-tan":36,"-":13}},{"path":"src/main/java/seedu/address/logic/commands/ListPropertiesCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Command to list all properties in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListPropertiesCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * The keyword used to trigger the listing of properties in the database.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"properties\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all properties in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @param model The {@code Model} which contains the application data and logic.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code CommandResult} containing the feedback message for the user after the command is executed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" // Logic to display properties","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayProperties();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":31}},{"path":"src/main/java/seedu/address/logic/commands/ListSellersCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Command to list all sellers in the client book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListSellersCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * The keyword used to trigger the listing of sellers in the database.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"sellers\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all sellers in the client book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @param model The {@code Model} which contains the application data and logic.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code CommandResult} containing the feedback message for the user after the command is executed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" // Filter the client list to only show sellers","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" model.updateFilteredClientList(Model.PREDICATE_SHOW_ALL_SELLERS_ONLY);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" // Set the model to display the clients","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Return success message with the appropriate entity type","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":36}},{"path":"src/main/java/seedu/address/logic/parser/AddBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddBuyerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParser implements Parser\u003cAddBuyerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddBuyerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddBuyerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddBuyerCommand} that adds a buyer based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Create a new Buyer using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":64}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Parses input arguments and creates a new {@link AddPropertyCommand} object.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * (postalCode, Unit) for creating a {@link Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParser implements Parser\u003cAddPropertyCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(postalCode, unit);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommand(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":51}},{"path":"src/main/java/seedu/address/logic/parser/AddSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddSellerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParser implements Parser\u003cAddSellerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddSellerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddSellerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddSellerCommand} that adds a seller based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Create a new Seller using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" case AddBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" case AddSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"thony-ui"},"content":" case DeleteBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"thony-ui"},"content":" case DeleteSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" case AddPropertyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jolwnn"},"content":" case DeletePropertyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommandParser().parse(arguments);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":9,"jolwnn":4,"Virusrwj223":4,"apollo-tan":1,"thony-ui":6,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" public static final Prefix PREFIX_KEY \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_POSTALCODE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_UNITNUMBER \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"apollo-tan":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteBuyerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParser implements Parser\u003cDeleteBuyerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteBuyerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteBuyerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteBuyerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/DeletePropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" * Parses input arguments and creates a new DeletePropertyCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParser implements Parser\u003cDeletePropertyCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePropertyCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" * and returns a DeletePropertyCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommand(postalCode, unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":48}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteSellerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParser implements Parser\u003cDeleteSellerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteSellerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteSellerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteSellerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_KEY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListBuyersCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListClientsCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListPropertiesCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListSellersCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" * Parses input arguments and creates a new {@code ListCommand} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ListCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * and returns a {@code ListCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code ListCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" * @throws ParseException If the user input does not conform to the expected format or the key is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_KEY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" String keyArg \u003d argMultimap.getValue(PREFIX_KEY).orElse(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" if (keyArg.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" // Switch case to handle different key values","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" switch (keyArg.toLowerCase()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" case ListClientsCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" return new ListClientsCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" case ListBuyersCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" return new ListBuyersCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" case ListSellersCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" return new ListSellersCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" case ListPropertiesCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" return new ListPropertiesCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"apollo-tan":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String postalCode} into a {@code postalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jolwnn"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jolwnn"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jolwnn"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jolwnn"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jolwnn"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String unitNumber} into a {@code unitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" public static Unit parseUnit(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" if (!Unit.isValidUnit(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" return new Unit(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Name parseClientName(String name) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Name(trimmedName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Phone parseClientPhone(String phone) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" if (!seedu.address.model.client.Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(seedu.address.model.client.Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Phone(trimmedPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Email parseClientEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Email(trimmedEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":32,"yongkheehou":46,"-":124}},{"path":"src/main/java/seedu/address/model/ClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.UniqueClientList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Wraps all data at the client-book level","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Duplicates are not allowed (by .isSameClient comparison)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientBook implements ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList clients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * among constructors.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" clients \u003d new UniqueClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook() {}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Creates an ClientBook using the Clients in the {@code toBeCopied}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBook(ReadOnlyClientBook toBeCopied) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" this.clients.setClients(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Resets the existing data of this {@code ClientBook} with {@code newData}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" public void resetData(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" //// client-level operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return clients.contains(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" clients.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" clients.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" * Removes {@code key} from this {@code ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" public void removeClient(Client key) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" clients.remove(key);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" //// util methods","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof ClientBook)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" ClientBook otherClientBook \u003d (ClientBook) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" return clients.equals(otherClientBook.clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" return clients.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_BUYERS_ONLY \u003d Client::isBuyer;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_SELLERS_ONLY \u003d Client::isSeller;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" * Returns the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" * Sets the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" void setClientBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" * Replaces client book data with the data in {@code clientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" void setClientBook(ReadOnlyClientBook clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" /** Returns the ClientBook */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook getClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a Client with the same identity as {@code Client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" * Deletes the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" * The person must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" * Adds the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" * {@code client} must not already exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" void addClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered client list */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" void updateFilteredClientList(Predicate\u003cClient\u003e predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs\u0027 property book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" void setPropertyBookFilePath(Path propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook getPropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a person with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" boolean hasProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jolwnn"},"content":" * Deletes the given property.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jolwnn"},"content":" * {@code property} must exist in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jolwnn"},"content":" void deleteProperty(Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" * Adds the given property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" * {@code property} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":" void addProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"jolwnn"},"content":" /** Returns an unmodifiable view of the filtered property list */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"apollo-tan"},"content":" ObservableList\u003cProperty\u003e getFilteredPropertyList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jolwnn"},"content":" * Updates the filter of the filtered property list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jolwnn"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jolwnn"},"content":" void updateFilteredPropertyList(Predicate\u003cProperty\u003e predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"apollo-tan"},"content":" void setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"apollo-tan"},"content":" void setDisplayProperties();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"jolwnn":12,"Virusrwj223":28,"apollo-tan":10,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.SimpleBooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private final PropertyBook propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" private final ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" private final FilteredList\u003cProperty\u003e filteredProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // note that filteredClients may be removed if we decide not to keep the filtering feature","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" private final BooleanProperty isDisplayClients \u003d new SimpleBooleanProperty(true);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook propertyBook, ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" + userPrefs + \" and property prefs \" + propertyBook + \" and client book \" + clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBook \u003d new PropertyBook(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d new ClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" this.filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" this.filteredClients \u003d new FilteredList\u003c\u003e(this.clientBook.getClientList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" this.filteredProperties \u003d new FilteredList\u003c\u003e(this.propertyBook.getPropertyList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" this(new AddressBook(), new UserPrefs(), new PropertyBook(), new ClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"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","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" return userPrefs.getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path clientBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setAddressBookFilePath(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" this.clientBook.resetData(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" return clientBook.hasClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" clientBook.removeClient(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage jsonClientBookStorage \u003d new JsonClientBookStorage(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" jsonClientBookStorage.saveClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" System.out.println(\"Error while saving ClientBook: \" + e.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" clientBook.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Client 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-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the list of {@code Client} backed by the internal list of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" * {@code versionedClientBook}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" return filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Property \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":" return userPrefs.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" userPrefs.setPropertyBookFilePath(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"jolwnn"},"content":" public void deleteProperty(Property target) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"jolwnn"},"content":" propertyBook.removeProperty(target);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"jolwnn"},"content":" try {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"jolwnn"},"content":" JsonPropertyBookStorage jsonPropertyBookStorage \u003d new JsonPropertyBookStorage(propertyBookFilePath);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"jolwnn"},"content":" jsonPropertyBookStorage.savePropertyBook(propertyBook);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"jolwnn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"jolwnn"},"content":" System.out.println(\"Error while saving PropertyBook: \" + e.getMessage());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook.hasProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"jolwnn"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Property 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-10-14","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"apollo-tan"},"content":" * Returns an unmodifiable view of the list of {@code Property} backed by the internal list of","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"jolwnn"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"apollo-tan"},"content":" public ObservableList\u003cProperty\u003e getFilteredPropertyList() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"apollo-tan"},"content":" return filteredProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"jolwnn"},"content":" public void updateFilteredPropertyList(Predicate\u003cProperty\u003e predicate) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"jolwnn"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"apollo-tan"},"content":" filteredProperties.setPredicate(predicate);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"apollo-tan"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Managing UI \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-14","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"apollo-tan"},"content":" public BooleanProperty getIsDisplayClientsProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"apollo-tan"},"content":" return isDisplayClients;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayClients() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"apollo-tan"},"content":" isDisplayClients.set(true);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":" isDisplayClients.set(false);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":79,"jolwnn":20,"Virusrwj223":37,"apollo-tan":31,"-":136}},{"path":"src/main/java/seedu/address/model/PropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.UniquePropertiesList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Duplicates are not allowed (by .isSameProperty comparison)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBook implements ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList properties;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" properties \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook() {}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Creates a PropertyBook using the Property in the {@code toBeCopied}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook(ReadOnlyPropertyBook toBeCopied) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Resets the existing data of this {@code PropertyBook} with {@code newData}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void resetData(ReadOnlyPropertyBook newData) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" setProperty(newData.getPropertyList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of the property list with {@code properties}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" this.properties.setProperties(properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property p) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" properties.add(p);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return properties.contains(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":" * Removes {@code key} from this {@code PropertyBook}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" public void removeProperty(Property key) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":" properties.remove(key);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" .add(\"properties\", properties)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e getPropertyList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return properties.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PropertyBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook otherPropertyBook \u003d (PropertyBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" return properties.equals(otherPropertyBook.properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" return properties.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jolwnn":8,"Virusrwj223":106}},{"path":"src/main/java/seedu/address/model/ReadOnlyClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Unmodifiable view of a client book","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public interface ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the client list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyPropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Unmodifiable view of a property book","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"public interface ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Returns an unmodifiable view of the property list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * This list will not contain any duplicate property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" ObservableList\u003cProperty\u003e getPropertyList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":2,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return clientBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" this.clientBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":10,"Virusrwj223":10,"-":88}},{"path":"src/main/java/seedu/address/model/client/Buyer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Buyer in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Buyer extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Buyer object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Buyer(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are buyers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.BUYER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Buyer)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Buyer otherPerson \u003d (Buyer) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.BUYER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" public String getTypeString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" return ClientTypes.BUYER.getType();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"apollo-tan":5,"thony-ui":9}},{"path":"src/main/java/seedu/address/model/client/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Represents a Client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public abstract class Client {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" protected final Name name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" protected final Phone phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" protected final Email email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Client(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public Name getName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" return name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public Email getEmail() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" return email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public abstract boolean isSameClient(Client otherClient);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" public abstract String getTypeString();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":39,"apollo-tan":1,"thony-ui":2}},{"path":"src/main/java/seedu/address/model/client/ClientTypes.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Represents the different types of clients in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * This enum provides two types of clients: BUYER and SELLER.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Each client type is associated with a specific string representation.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public enum ClientTypes {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a buyer client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" BUYER(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Represents a seller client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" SELLER(\"seller\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_TYPE_CONSTRAINTS \u003d \"Client types should only be `BUYER` or `SELLER`\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code ClientTypes} with the specified type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * @param type The string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientTypes(String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * @return The client type as a string.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public String getType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" return type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidClientType(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" return test.equals(ClientTypes.BUYER.toString()) || test.equals(ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50}},{"path":"src/main/java/seedu/address/model/client/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Email {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * @param email A valid email address.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public Email(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" value \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/model/client/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Name {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public Name(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":66}},{"path":"src/main/java/seedu/address/model/client/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Phone {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \"Phone numbers should only contain 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"^[89]\\\\d{7}$\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public Phone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" value \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/model/client/Seller.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Seller in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Seller extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Seller object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Seller(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are sellers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Seller)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Seller otherPerson \u003d (Seller) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.SELLER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" public String getTypeString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" return ClientTypes.SELLER.getType();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"apollo-tan":4,"thony-ui":8}},{"path":"src/main/java/seedu/address/model/client/UniqueClientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * A list of clients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * A client is considered unique by comparing using {@code Client#isSameClient(Client)}. As such, adding and updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * clients uses Client#isSameClient(Client) for equality so as to ensure that the client being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * unique in terms of identity in the UniqueClientList. However, the removal of a client uses Client#equals(Object) so","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * as to ensure that the client with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * @see Client#isSameClient(Client)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientList implements Iterable\u003cClient\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns true if the list contains an equivalent client as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public boolean contains(Client toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return internalList.stream().anyMatch(toCheck::isSameClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void add(Client toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Replaces the client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" if (!target.isSameClient(editedClient) \u0026\u0026 contains(editedClient)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" internalList.set(index, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public void remove(Client toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" public void setClients(UniqueClientList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of this list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" if (!clientsAreUnique(clients)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public Iterator\u003cClient\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof UniqueClientList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList otherUniqueClientList \u003d (UniqueClientList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return internalList.equals(otherUniqueClientList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * Returns true if {@code clients} contains only unique clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" private boolean clientsAreUnique(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" for (int i \u003d 0; i \u003c clients.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" for (int j \u003d i + 1; j \u003c clients.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" if (clients.get(i).isSameClient(clients.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":150}},{"path":"src/main/java/seedu/address/model/client/exceptions/ClientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation is unable to find the specified client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6}},{"path":"src/main/java/seedu/address/model/client/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * identity and are of the same type (either Buyer or Seller).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":11}},{"path":"src/main/java/seedu/address/model/property/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property postal code in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; postal code is valid as declared in {@link #isValidPostalCode(String)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Postal Code numbers should only contain positive numbers, and it should be exactly 6 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * @param postalCode A valid phone number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidPostalCode(postalCode), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" value \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid postcal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidPostalCode(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PostalCode)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" PostalCode otherPostalCode \u003d (PostalCode) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherPostalCode.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class Property {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private final Unit unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public Property(PostalCode postalCode, Unit unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" return postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Unit getUnit() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same unit number and postal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same identity and data fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * This defines a stronger notion of equality between two properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return Objects.hash(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .add(\"unit\", unit)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":82}},{"path":"src/main/java/seedu/address/model/property/UniquePropertiesList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * A list of properties that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * A property is considered unique by comparing using {@code Property#isSameProperty(Property)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * As such, adding and updating of properties uses {@code Property#isSameProperty(Property)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * for equality to ensure uniqueness.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * @see Property#isSameProperty(Property)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesList implements Iterable\u003cProperty\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if the list contains an equivalent property as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public boolean contains(Property toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" return internalList.stream().anyMatch(toCheck::isSameProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void add(Property toAdd) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" public void remove(Property toRemove) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the property {@code target} in the list with {@code editedProperty}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" * The property identity of {@code editedProperty} must not be the same as another existing property in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(Property target, Property editedProperty)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" throws DuplicatePropertyException, PropertyNotFoundException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(target, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" if (!target.isSameProperty(editedProperty) \u0026\u0026 contains(editedProperty)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" internalList.set(index, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(UniquePropertiesList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of this list with {@code properties}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" * {@code properties} must not contain duplicate properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(List\u003cProperty\u003e properties) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" if (!propertiesAreUnique(properties)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" * Returns an iterator over the properties in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" * @return An iterator over the properties.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" public Iterator\u003cProperty\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof UniquePropertiesList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList otherUniquePropertyList \u003d (UniquePropertiesList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" return internalList.equals(otherUniquePropertyList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if {@code properties} contains only unique properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" private boolean propertiesAreUnique(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" for (int i \u003d 0; i \u003c properties.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" for (int j \u003d i + 1; j \u003c properties.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" if (properties.get(i).isSameProperty(properties.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jolwnn":11,"Virusrwj223":143}},{"path":"src/main/java/seedu/address/model/property/Unit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property unit in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; unit is valid as declared in {@link #isValidUnit(String)}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class Unit {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Unit numbers should only contain numbers delimited by a dash, and it should be minimally 2 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" \"^(?:\\\\d{2}|1[0-3]\\\\d|14[0-8])-(?:\\\\d{2,5}|10\\\\d{4}|110\\\\d{3}|1110\\\\d{2}|11110\\\\d|111110)$\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code Unit}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * @param unit A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public Unit(String unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidUnit(unit), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" value \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidUnit(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Unit)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit otherUnit \u003d (Unit) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherUnit.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/exceptions/DuplicatePropertyException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation will result in duplicate Property (Properties are considered duplicates if they have the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" * same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"public class DuplicatePropertyException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" public DuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":11}},{"path":"src/main/java/seedu/address/model/property/exceptions/PropertyNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" public PropertyNotFoundException() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public static Client[] getSampleClients() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Client[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"87438807\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"Bernice Yu\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"99272758\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"berniceyu@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"93210283\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"charlotte@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"David Li\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"91031282\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"lidavid@example.com\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public static ReadOnlyClientBook getSampleClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ClientBook sampleAb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" for (Client sampleClient : getSampleClients()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" return sampleAb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" public static Property[] getSampleProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return new Property[] {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123456\"), new Unit(\"11-11\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123457\"), new Unit(\"00-00\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" };","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public static ReadOnlyPropertyBook getSamplePropertyBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook sampleAb \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" for (Property sampleProperty : getSampleProperty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" sampleAb.addProperty(sampleProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" return sampleAb;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"yongkheehou":28,"Virusrwj223":20,"-":60}},{"path":"src/main/java/seedu/address/storage/ClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a storage for {@link seedu.address.model.ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"public interface ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Returns ClientBook data as a {@link ReadOnlyClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @see #getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Saves the given {@link ReadOnlyClientBook} to the storage.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * @param clientBook cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * @see #saveClientBook(ReadOnlyClientBook)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * Jackson-friendly version of {@link Client}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonAdaptedClient {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Client\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final String name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private final String phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private final String email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"type\") String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" type \u003d source instanceof Buyer ? ClientTypes.BUYER.toString() : ClientTypes.SELLER.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Converts this Jackson-friendly adapted client object into the model\u0027s {@code Client} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" ClientTypes.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" if (!ClientTypes.isValidClientType(type)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(ClientTypes.CLIENT_TYPE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return Objects.equals(type, ClientTypes.BUYER.toString()) ? new Buyer(modelName, modelPhone, modelEmail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" : new Seller(modelName, modelPhone, modelEmail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":93}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedProperty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * Jackson-friendly version of {@link Property}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final String postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private final String unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonAdaptedProperty} with the given property details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(@JsonProperty(\"postalCode\") String postalCode, @JsonProperty(\"unit\") String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code Property} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(Property source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d source.getPostalCode().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d source.getUnit().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" * Converts this Jackson-friendly adapted property object into the model\u0027s {@code Property} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public Property toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" if (postalCode \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" if (!PostalCode.isValidPostalCode(postalCode)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" final PostalCode modelPostalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (unit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" if (!Unit.isValidUnit(unit)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" final Unit modelUnit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" return new Property(modelPostalCode, modelUnit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":61}},{"path":"src/main/java/seedu/address/storage/JsonClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A class to access ClientBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class JsonClientBookStorage implements ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClientBookStorage.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private Path filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public JsonClientBookStorage(Path filePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #readClientBook()}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cJsonSerializableClientBook\u003e jsonClientBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" filePath, JsonSerializableClientBook.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" if (!jsonClientBook.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return Optional.of(jsonClientBook.get().toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #saveClientBook(ReadOnlyClientBook)}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClientBook(clientBook), filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/storage/JsonPropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * A class to access PropertyBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorage implements PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private Path filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public JsonPropertyBookStorage(Path filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #readPropertyBook()}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cJsonSerializablePropertyBook\u003e jsonPropertyBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" filePath, JsonSerializablePropertyBook.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (!jsonPropertyBook.isPresent()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return Optional.of(jsonPropertyBook.get().toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #savePropertyBook(ReadOnlyPropertyBook)}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePropertyBook(propertyBook), filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/storage/JsonSerializableClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * An Immutable ClientBook that is serializable to JSON format.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"@JsonRootName(value \u003d \"clientbook\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonSerializableClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"Clients list contains duplicate client(s).\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonSerializableClientBook} with the given clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code ReadOnlyClientBook} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(ReadOnlyClientBook source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" clients.addAll(source.getClientList().stream().map(JsonAdaptedClient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Converts this client book into the model\u0027s {@code ClientBook} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public ClientBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" for (JsonAdaptedClient jsonAdaptedClient : clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" if (clientBook.hasClient(client)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/storage/JsonSerializablePropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * An Immutable PropertyBook that is serializable to JSON format.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"@JsonRootName(value \u003d \"propertybook\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerializablePropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"Properties list contains duplicate property(s).\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final List\u003cJsonAdaptedProperty\u003e properties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonSerializablePropertyBook} with the given properties.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(@JsonProperty(\"properties\") List\u003cJsonAdaptedProperty\u003e properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" this.properties.addAll(properties);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code ReadOnlyPropertyBook} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(ReadOnlyPropertyBook source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" properties.addAll(source.getPropertyList().stream().map(JsonAdaptedProperty::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Converts this property book into the model\u0027s {@code PropertyBook} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" for (JsonAdaptedProperty jsonAdaptedProperty : properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d jsonAdaptedProperty.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (propertyBook.hasProperty(property)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":59}},{"path":"src/main/java/seedu/address/storage/PropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Represents a storage for {@link seedu.address.model.PropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public interface PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Returns AddressBook data as a {@link ReadOnlyPropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * @see #getPropertyBookFilePath()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Saves the given {@link ReadOnlyPropertyBook} to the storage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * @param propertyBook cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" * @see #savePropertyBook(ReadOnlyPropertyBook)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":44}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage, PropertyBookStorage, ClientBookStorage {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":8,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private PropertyBookStorage propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private ClientBookStorage clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage, ClientBookStorage clientBookStorage) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookStorage \u003d propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" this.clientBookStorage \u003d clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":37,"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","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook 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-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" propertyBookStorage.savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook 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-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return clientBookStorage.readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" clientBookStorage.saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":29,"-":76}},{"path":"src/main/java/seedu/address/ui/ClientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"public class ClientCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"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-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public final Client client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" private Label phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private Label email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" private Label clientType;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public ClientCard(Client client, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" this.client \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" name.setText(client.getName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" clientType.setText(\"[\" + client.getTypeString() + \"]\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" phone.setText(client.getPhone().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" email.setText(client.getEmail().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return this.cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"apollo-tan":3}},{"path":"src/main/java/seedu/address/ui/ClientListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ClientListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private ListView\u003cClient\u003e clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientListPanel(ObservableList\u003cClient\u003e clientList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" clientListView.setItems(clientList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" clientListView.setCellFactory(listView -\u003e new ClientListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" class ClientListViewCell extends ListCell\u003cClient\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" protected void updateItem(Client client, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super.updateItem(client, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" if (empty || client \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" setGraphic(new ClientCard(client, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public ListView\u003cClient\u003e getClientListView() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return this.clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":53}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private ClientListPanel clientListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" private PropertyListPanel propertyListPanel;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" private StackPane listPanelPlaceholder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" clientListPanel \u003d new ClientListPanel(logic.getFilteredClientList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"apollo-tan"},"content":" propertyListPanel \u003d new PropertyListPanel(logic.getFilteredPropertyList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"apollo-tan"},"content":" // Initialise clientListPanel to display Clients","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"apollo-tan"},"content":" listPanelPlaceholder.getChildren().setAll(clientListPanel.getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"apollo-tan"},"content":" // Add listener to modify display appropriately","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"apollo-tan"},"content":" logic.getIsDisplayClientsProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"apollo-tan"},"content":" if (newValue) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"apollo-tan"},"content":" listPanelPlaceholder.getChildren().setAll(clientListPanel.getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"apollo-tan"},"content":" } else {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"apollo-tan"},"content":" listPanelPlaceholder.getChildren().setAll(propertyListPanel.getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"apollo-tan"},"content":" });","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" void handleExit() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6,"apollo-tan":17,"-":192}},{"path":"src/main/java/seedu/address/ui/PropertyCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":" * A UI component that displays information of a {@code Property}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"public class PropertyCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" private static final String FXML \u003d \"PropertyListCard.fxml\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" public final Property property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private HBox propertyCardPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" private Label id;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" private Label postalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" private Label typeLabel;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" private Label unit;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" * Creates a {@code PropertyCard} with the given {@code Property} and index to display.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" public PropertyCard(Property property, int displayedIndex) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" super(FXML);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" this.property \u003d property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" postalCode.setText(property.getPostalCode().value);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" unit.setText(property.getUnit().value);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" public HBox getPropertyCardPane() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" return this.propertyCardPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":43}},{"path":"src/main/java/seedu/address/ui/PropertyListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" * Panel containing the list of properties.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class PropertyListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private static final String FXML \u003d \"PropertyListPanel.fxml\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PropertyListPanel.class);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" private ListView\u003cProperty\u003e propertyListView;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" * Creates a {@code PropertyListPanel} with the given list of properties.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" public PropertyListPanel(ObservableList\u003cProperty\u003e propertyList) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" super(FXML);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" propertyListView.setItems(propertyList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" propertyListView.setCellFactory(listView -\u003e new PropertyListViewCell());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Property} using a {@code PropertyCard}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" class PropertyListViewCell extends ListCell\u003cProperty\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" protected void updateItem(Property property, boolean empty) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" super.updateItem(property, empty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" if (empty || property \u003d\u003d null) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" setText(null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" } else {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" setGraphic(new PropertyCard(property, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" public ListView\u003cProperty\u003e getPropertyListView() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" return this.propertyListView;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":55}},{"path":"src/main/resources/view/ClientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"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-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" \u003c!-- Client Type Label (e.g. [buyer], [seller]) --\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"clientType\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$type\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" \u003c!-- Phone and Email Labels --\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"apollo-tan":3}},{"path":"src/main/resources/view/ClientListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" \u003cListView fx:id\u003d\"clientListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" \u003cStackPane fx:id\u003d\"listPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"apollo-tan":1,"-":59}},{"path":"src/main/resources/view/PropertyListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"propertyCardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"postalCode\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"typeLabel\" text\u003d\"[property]\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"unit\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":33}},{"path":"src/main/resources/view/PropertyListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":" \u003cListView fx:id\u003d\"propertyListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" new JsonClientBookStorage(temporaryFolder.resolve(\"clientbook.json\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" // String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(prefPath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw e;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String addBuyerCommand \u003d AddBuyerCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedPerson \u003d new ClientBuilder(AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" expectedModel.addClient(expectedPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" assertCommandFailure(addBuyerCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"apollo-tan"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"apollo-tan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"apollo-tan"},"content":" public void getFilteredPropertiesList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"apollo-tan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPropertyList().remove(0));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_returnsBooleanPropertyType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d logic.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of BooleanProperty","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof BooleanProperty, \"Expected result to be an instance of BooleanProperty\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_isObservable() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d logic.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of Observable","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof Observable, \"Expected result to be an instance of Observable\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":13,"apollo-tan":42,"-":155}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class MessagesTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_singlePrefix_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_multiplePrefixes_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixEmail \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone, prefixEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"e/ p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" void formatBuyer_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Client buyer \u003d new Buyer(new Name(\"Alice Bee\"), new Phone(\"98765432\"), new Email(\"alice@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"BUYER; Alice Bee; Phone: 98765432; Email: alice@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" void formatSeller_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Client seller \u003d new Seller(new Name(\"Bob Bee\"), new Phone(\"87654321\"), new Email(\"bob@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"SELLER; Bob Bee; Phone: 87654321; Email: bob@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" void formatProperty_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(new PostalCode(\"123456\"), new Unit(\"12-75\"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" String result \u003d Messages.format(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d \"PostalCode: 123456; Unit: 12-75\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":67,"Virusrwj223":16}},{"path":"src/test/java/seedu/address/logic/commands/AddBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"class AddBuyerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Buyer buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" buyer \u003d mock(Buyer.class); // Mocking the Buyer object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullBuyer_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddBuyerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void execute_buyerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddBuyerCommand.MESSAGE_SUCCESS_BUYER, Messages.format(buyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addBuyerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(buyer); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateBuyer_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addBuyerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand, addBuyerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" void equals_sameBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(buyer); // Same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand1, addBuyerCommand2); // Different instances, same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void equals_differentBuyer_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Buyer differentBuyer \u003d mock(Buyer.class); // Different Buyer instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(differentBuyer); // Different buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand1, addBuyerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Client differentClient \u003d mock(Client.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand, differentClient); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"jolwnn"},"content":" public void deleteProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"jolwnn"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"apollo-tan"},"content":" public ObservableList\u003cProperty\u003e getFilteredPropertyList() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"jolwnn"},"content":" public void updateFilteredPropertyList(Predicate\u003cProperty\u003e predicate) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"jolwnn"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"apollo-tan"},"content":" public BooleanProperty getIsDisplayClientsProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayClients() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50,"jolwnn":10,"Virusrwj223":27,"apollo-tan":22,"-":206}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Property property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" private Model model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" @BeforeEach","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" void setUp() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" property \u003d mock(Property.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" model \u003d mock(Model.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPropertyCommand(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(false);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(AddPropertyCommand.MESSAGE_SUCCESS, Messages.format(property));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" CommandResult result \u003d addPropertyCommand.execute(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" verify(model).addProperty(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" void execute_duplicateProperty_throwsCommandException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate property","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(true);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(CommandException.class, () -\u003e addPropertyCommand.execute(model),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Property differentProperty \u003d mock(Property.class); // Different Seller instance","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(differentProperty);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, addPropertyCommand2);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":103}},{"path":"src/test/java/seedu/address/logic/commands/AddSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class AddSellerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Seller seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" seller \u003d mock(Seller.class); // Mocking the Seller object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSellerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddSellerCommand.MESSAGE_SUCCESS_SELLER, Messages.format(seller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addSellerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(seller); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateSeller_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addSellerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand, addSellerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(seller); // Same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand1, addSellerCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Seller differentSeller \u003d mock(Seller.class); // Different Seller instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(differentSeller); // Different seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand1, addSellerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":104}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public static final String VALID_PHONE_AMY \u003d \"91111111\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final String VALID_PHONE_BOB \u003d \"92222222\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_ADMIRALTY \u003d \"654321\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_BEDOK \u003d \"321456\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" public static final String VALID_NOTFOUND_POSTALCODE_CLEMENTI \u003d \"999999\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_ADMIRALTY \u003d \"02-22\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_BEDOK \u003d \"11-12\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" public static final String VALID_NOTFOUND_UNIT_CLEMENTI \u003d \"16-02\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_ADMIRALTY \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_BEDOK \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_ADMIRALTY \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_BEDOK \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_POSTALCODE_DESC \u003d \" \" + PREFIX_POSTALCODE + \"1234\"; //PostalCode with few numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_UNIT_DESC \u003d \" \" + PREFIX_UNITNUMBER + \"11 11\"; //\u0027-\u0027 delimiter missing","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"jolwnn":2,"Virusrwj223":12,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/DeleteBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteBuyerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" public void execute_phoneNumberFound_assertCommandSuccess() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"94351253\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand deleteBuyerCommand \u003d new DeleteBuyerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteBuyerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" final DeleteBuyerCommand standardCommand \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand commandWithSameValues \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteBuyerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":7,"-":117}},{"path":"src/test/java/seedu/address/logic/commands/DeletePropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTFOUND_POSTALCODE_CLEMENTI;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTFOUND_UNIT_CLEMENTI;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" public void execute_validPostalCodeAndUnitNumber_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" Property propertyToDelete \u003d model.getFilteredPropertyList().stream()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" .filter(property -\u003e property.getPostalCode().equals(postalCode)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 property.getUnit().equals(unit))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(String.format(\"Property not found. \",","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" VALID_POSTALCODE_ADMIRALTY, VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" new DeletePropertyCommand(propertyToDelete.getPostalCode(), propertyToDelete.getUnit());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(DeletePropertyCommand.MESSAGE_DELETE_PROPERTY_SUCCESS,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" Messages.format(propertyToDelete));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" ModelManager expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" assertCommandSuccess(deletePropertyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" public void execute_postalCodeNotFound_throwsCommandException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":" PostalCode notFoundPostalCode \u003d new PostalCode(VALID_NOTFOUND_POSTALCODE_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(notFoundPostalCode, unit);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" assertCommandFailure(deletePropertyCommand, model,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" String.format(\"Property not found. \", notFoundPostalCode, unit));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" public void execute_unitNumberNotFound_throwsCommandException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" Unit notFoundUnit \u003d new Unit(VALID_NOTFOUND_UNIT_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, notFoundUnit);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" assertCommandFailure(deletePropertyCommand, model,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":" String.format(\"Property not found. \", postalCode, notFoundUnit));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" public void execute_postalCodeAndUnitNumberNotFound_throwsCommandException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" PostalCode notFoundPostalCode \u003d new PostalCode(VALID_NOTFOUND_POSTALCODE_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":" Unit notFoundUnit \u003d new Unit(VALID_NOTFOUND_UNIT_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(notFoundPostalCode, notFoundUnit);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":" assertCommandFailure(deletePropertyCommand, model,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jolwnn"},"content":" String.format(\"Property not found. \", notFoundPostalCode, notFoundUnit));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jolwnn"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode1 \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode2 \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jolwnn"},"content":" Unit unit1 \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jolwnn"},"content":" Unit unit2 \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommand \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteSecondCommand \u003d new DeletePropertyCommand(postalCode2, unit2);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jolwnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jolwnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommandCopy \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jolwnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jolwnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jolwnn"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jolwnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, unit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jolwnn"},"content":" String expected \u003d DeletePropertyCommand.class.getCanonicalName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jolwnn"},"content":" + \"{postalCode\u003d\" + postalCode + \", unitNumber\u003d\" + unit + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jolwnn"},"content":" assertEquals(expected, deletePropertyCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":122}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteSellerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" public void execute() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand deleteSellerCommand \u003d new DeleteSellerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteSellerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" final DeleteSellerCommand standardCommand \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand commandWithSameValues \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteSellerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6,"Virusrwj223":8,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/ListBuyersCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":"public class ListBuyersCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" public void listBuyersCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListBuyersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListBuyersCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListBuyersCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListBuyersCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteBuyers() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListBuyersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all buyers\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" public void keywordEqualsBuyers() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"buyers\", ListBuyersCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":50}},{"path":"src/test/java/seedu/address/logic/commands/ListClientsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListClientsCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" public void listClientsCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListClientsCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListClientsCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListClientsCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListClientsCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteClients() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListClientsCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all clients\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" public void keywordEqualsClients() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"clients\", ListClientsCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import java.lang.reflect.Modifier;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" public void listCommandIsAbstract() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" Class\u003cListCommand\u003e clazz \u003d ListCommand.class;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" // Check if the class is abstract","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Modifier.isAbstract(clazz.getModifiers()), \"ListCommand should be abstract\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" public void commandWordEqualsList() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"list\", ListCommand.COMMAND_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":4,"apollo-tan":9,"-":29}},{"path":"src/test/java/seedu/address/logic/commands/ListPropertiesCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListPropertiesCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" public void listPropertiesCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListPropertiesCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListPropertiesCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListPropertiesCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListPropertiesCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteProperties() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListPropertiesCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all properties\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" public void keywordPropertiesBuyers() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"properties\", ListPropertiesCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":49}},{"path":"src/test/java/seedu/address/logic/commands/ListSellersCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListSellersCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" public void listSellersCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListSellersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListSellersCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListSellersCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListSellersCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteSellers() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListSellersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all sellers\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" public void keywordEqualsSellers() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"sellers\", ListSellersCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":49}},{"path":"src/test/java/seedu/address/logic/parser/AddBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddBuyerCommandParser parser \u003d new AddBuyerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedBuyer \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddBuyerCommand(expectedBuyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":91}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTALCODE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParserTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private AddPropertyCommandParser parser \u003d new AddPropertyCommandParser();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" Property expectedProperty \u003d new PropertyBuilder().withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertParseSuccess(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" new AddPropertyCommand(expectedProperty));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // missing PostalCode prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, UNIT_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // missing unit prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // invalid postal code","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, INVALID_POSTALCODE_DESC + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" // invalid unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + INVALID_UNIT_DESC,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessagePostalCode \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessageUnit \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" expectedMessagePostalCode);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" expectedMessageUnit);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":74}},{"path":"src/test/java/seedu/address/logic/parser/AddSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddSellerCommandParser parser \u003d new AddSellerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Seller expectedSeller \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddSellerCommand(expectedSeller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addBuyer() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer alice \u003d new ClientBuilder(ALICE).withEmail(ALICE.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" .withPhone(ALICE.getPhone().toString()).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand command \u003d (AddBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + ALICE.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + ALICE.getPhone() + \" \" + PREFIX_EMAIL + ALICE.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddBuyerCommand(alice), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addSeller() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" Seller daniel \u003d new ClientBuilder(DANIEL).withEmail(DANIEL.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" .withPhone(DANIEL.getPhone().toString()).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand command \u003d (AddSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + DANIEL.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + DANIEL.getPhone() + \" \" + PREFIX_EMAIL + DANIEL.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddSellerCommand(daniel), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteBuyer() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" final String phoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand command \u003d (DeleteBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteBuyerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteSeller() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" final String phoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand command \u003d (DeleteSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteSellerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" public void parseCommand_addProperty() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand command \u003d (AddPropertyCommand) parser.parseCommand(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.COMMAND_WORD + \" \" + PREFIX_POSTALCODE + ADMIRALTY.getPostalCode() + \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + ADMIRALTY.getUnit()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" );","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(new AddPropertyCommand(property), command);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" public void parseCommand_deleteProperty() throws Exception {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand command \u003d (DeletePropertyCommand) parser.parseCommand(","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.COMMAND_WORD + \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_ADMIRALTY","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" + \" \" + PREFIX_UNITNUMBER + VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" assertEquals(new DeletePropertyCommand(postalCode, unitNumber), command);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/buyers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/sellers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/properties\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/clients\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"jolwnn":16,"yongkheehou":35,"Virusrwj223":17,"apollo-tan":6,"thony-ui":17,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" private DeleteBuyerCommandParser parser \u003d new DeleteBuyerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" private final String nonEmptyphoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteBuyerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteBuyerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"thony-ui":37}},{"path":"src/test/java/seedu/address/logic/parser/DeletePropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTALCODE_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" private DeletePropertyCommandParser parser \u003d new DeletePropertyCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d INVALID_POSTALCODE_DESC + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeAndUnit_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d INVALID_POSTALCODE_DESC + \" \" + INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidUnitNumberFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY + \" \" + INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" public void parse_missingPostalCode_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":" public void parse_missingUnitNumber_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":" public void parse_missingPostalCodePrefix_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d VALID_POSTALCODE_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jolwnn"},"content":" public void parse_missingUnitNumberPrefix_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY + \" \" + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jolwnn"},"content":" public void parse_extraSpaces_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + POSTALCODE_DESC_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY + \" \";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jolwnn"},"content":" public void parse_onlySpaces_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jolwnn"},"content":" public void parse_upperCasePrefixes_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \"C/\" + VALID_POSTALCODE_ADMIRALTY + \" U/\" + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jolwnn"},"content":" public void parse_preamblePresent_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \"randomPreambleText \" + POSTALCODE_DESC_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":128}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private DeleteSellerCommandParser parser \u003d new DeleteSellerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" private final String nonEmptyphoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteSellerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteSellerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"thony-ui":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"123 45\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d \"11-11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Test for parsing index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" // Tests for Tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientName(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientName(INVALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithoutWhitespace_returnsClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(VALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithWhitespace_returnsTrimmedClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"yongkheehou"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(nameWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientPhone(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientPhone(INVALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithoutWhitespace_returnsClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(VALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithWhitespace_returnsTrimmedClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"yongkheehou"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(phoneWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientEmail((String) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientEmail(INVALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(VALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"yongkheehou"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(emailWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property PostalCode","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePostalCode((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePostalCode(INVALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(VALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Virusrwj223"},"content":" String postalCodeWithWhitespace \u003d WHITESPACE + VALID_POSTALCODE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(postalCodeWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property Unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseUnit((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseUnit(INVALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(VALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Virusrwj223"},"content":" String unitWithWhitespace \u003d WHITESPACE + VALID_UNIT + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(unitWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"yongkheehou":79,"Virusrwj223":54,"-":191}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_BUYERS_ONLY;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_SELLERS_ONLY;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.CARL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBookBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new ClientBook(), new ClientBook(modelManager.getClientBook()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"new/client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClientBookFilePath(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_validPath_setsClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Path path \u003d Paths.get(\"data/clientbook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" modelManager.setClientBookFilePath(path);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(path, modelManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientNotInClientBook_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" assertFalse(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientInClientBook_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" modelManager.addClient(CARL);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" assertTrue(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" public void setPropertyBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPropertyBookFilePath(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jolwnn"},"content":" public void setPropertyBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jolwnn"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"jolwnn"},"content":" modelManager.setPropertyBookFilePath(path);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"jolwnn"},"content":" assertEquals(path, modelManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jolwnn"},"content":" public void hasProperty_propertyInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jolwnn"},"content":" modelManager.addProperty(BEDOK);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jolwnn"},"content":" assertTrue(modelManager.hasProperty(BEDOK));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jolwnn"},"content":" public void getFilteredPropertyList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"jolwnn"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPropertyList().remove(0));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"apollo-tan"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Equality Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBookBuilder().withClient(CARL).withClient(DANIEL).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" ClientBook differentClientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"Virusrwj223"},"content":" differentClientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new PropertyBook(), clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":" clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_returnsBooleanPropertyType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d modelManager.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of BooleanProperty","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof BooleanProperty, \"Expected result to be an instance of BooleanProperty\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_isObservable() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d modelManager.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of Observable","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof Observable, \"Expected result to be an instance of Observable\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"apollo-tan"},"content":" public void testBuyerPredicate() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"apollo-tan"},"content":" Name nameBuyer \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"apollo-tan"},"content":" Phone phoneBuyer \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"apollo-tan"},"content":" Email emailBuyer \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"apollo-tan"},"content":" Client mockBuyer \u003d new Buyer(nameBuyer, phoneBuyer, emailBuyer);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"apollo-tan"},"content":" Name nameSeller \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"apollo-tan"},"content":" Phone phoneSeller \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"apollo-tan"},"content":" Email emailSeller \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"apollo-tan"},"content":" Client mockSeller \u003d new Seller(nameSeller, phoneSeller, emailSeller);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"apollo-tan"},"content":" assertTrue(PREDICATE_SHOW_ALL_BUYERS_ONLY.test(mockBuyer), \"Buyer should pass the buyer predicate\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"apollo-tan"},"content":" // Predicate should return false for (when client is a buyer)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"apollo-tan"},"content":" assertFalse(","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"apollo-tan"},"content":" PREDICATE_SHOW_ALL_BUYERS_ONLY.test(mockSeller),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"apollo-tan"},"content":" \"Seller should not pass the buyer predicate\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"apollo-tan"},"content":" );","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"apollo-tan"},"content":" public void testSellerPredicate() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"apollo-tan"},"content":" // Mocking the buyer and seller details","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"apollo-tan"},"content":" Name nameBuyer \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"apollo-tan"},"content":" Phone phoneBuyer \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"apollo-tan"},"content":" Email emailBuyer \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"apollo-tan"},"content":" Client mockBuyer \u003d new Buyer(nameBuyer, phoneBuyer, emailBuyer);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"apollo-tan"},"content":" Name nameSeller \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"apollo-tan"},"content":" Phone phoneSeller \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"apollo-tan"},"content":" Email emailSeller \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"apollo-tan"},"content":" Client mockSeller \u003d new Seller(nameSeller, phoneSeller, emailSeller);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"apollo-tan"},"content":" // Predicate should return true for sellers","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"apollo-tan"},"content":" assertTrue(PREDICATE_SHOW_ALL_SELLERS_ONLY.test(mockSeller), \"Seller should pass the seller predicate\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"apollo-tan"},"content":" // Predicate should return false for buyers (when client is a buyer)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"apollo-tan"},"content":" assertFalse(","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"apollo-tan"},"content":" PREDICATE_SHOW_ALL_SELLERS_ONLY.test(mockBuyer),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"apollo-tan"},"content":" \"Buyer should not pass the seller predicate\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"apollo-tan"},"content":" );","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46,"jolwnn":23,"Virusrwj223":10,"apollo-tan":77,"-":127}},{"path":"src/test/java/seedu/address/model/client/BuyerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class BuyerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer, buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"John Doe\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"12345678\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"john@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Buyer\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dBUYER, name\u003dJohn Doe, phone\u003d12345678, email\u003djohn@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, buyer.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"apollo-tan"},"content":" void testGetTypeString_returnsCorrectType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"apollo-tan"},"content":" // Arrange","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":" Buyer buyer \u003d new Buyer(mock(Name.class), mock(Phone.class), mock(Email.class));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":" // Act","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" String typeString \u003d buyer.getTypeString();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"apollo-tan"},"content":" // Assert","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"apollo-tan"},"content":" assertEquals(ClientTypes.BUYER.getType(), typeString);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154,"apollo-tan":12}},{"path":"src/test/java/seedu/address/model/client/ClientTypesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class ClientTypesTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void getType_buyer_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"buyer\", ClientTypes.BUYER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void getType_seller_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"seller\", ClientTypes.SELLER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validBuyer_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"BUYER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validSeller_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"SELLER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_invalidType_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"INVALID\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseBuyer_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"buyer\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseSeller_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"seller\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_nullValue_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_emptyString_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":55}},{"path":"src/test/java/seedu/address/model/client/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class EmailTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidEmail() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // blank email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // missing parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" // invalid parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // valid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":88}},{"path":"src/test/java/seedu/address/model/client/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class NameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class PhoneTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidPhone() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null phone number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // valid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"83121534\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d new Phone(\"99928495\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(new Phone(\"99928495\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(new Phone(\"99924444\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":59}},{"path":"src/test/java/seedu/address/model/client/SellerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class SellerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller, seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"Jane Smith\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"87654321\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"jane@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Seller\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dSELLER, name\u003dJane Smith, phone\u003d87654321, email\u003djane@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, seller.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"apollo-tan"},"content":" void testGetTypeString_returnsCorrectType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"apollo-tan"},"content":" // Arrange","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":" Seller seller \u003d new Seller(mock(Name.class), mock(Phone.class), mock(Email.class));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":" // Act","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" String typeString \u003d seller.getTypeString();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"apollo-tan"},"content":" // Assert","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"apollo-tan"},"content":" assertEquals(ClientTypes.SELLER.getType(), typeString);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154,"apollo-tan":12}},{"path":"src/test/java/seedu/address/model/client/UniqueClientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientListTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList uniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void contains_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.contains(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public void add_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.add(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void add_duplicateClient_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.add(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullTargetClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(null, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullEditedClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(ALICE, null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void setClient_targetClientNotInList_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.setClient(ALICE, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientIsSameClient_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasSameIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasNonUniqueIdentity_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClient(ALICE, BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public void remove_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.remove(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" public void remove_personDoesNotExist_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.remove(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" public void remove_existingClient_removesClient() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.remove(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullUniqueClientList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((UniqueClientList) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void setClients_uniqueClientList_replacesOwnListWithProvidedUniqueClientList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(expectedUniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((List\u003cClient\u003e) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" public void setClients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(personList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" public void setClients_listWithDuplicateClients_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e listWithDuplicateClients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClients(listWithDuplicateClients));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" -\u003e uniqueClientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" assertEquals(uniqueClientList.asUnmodifiableObservableList().toString(), uniqueClientList.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":175}},{"path":"src/test/java/seedu/address/model/client/exceptions/ClientNotFoundExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" public void clientNotFoundException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Test that the ClientNotFoundException can be thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":16}},{"path":"src/test/java/seedu/address/model/client/exceptions/DuplicateClientExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" // Test that DuplicateClientException is thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_hasCorrectMessage() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" // Test that the message in DuplicateClientException is as expected","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Exception exception \u003d assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"Operation would result in duplicate persons\", exception.getMessage());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":26}},{"path":"src/test/java/seedu/address/model/property/PostalCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCodeTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new PostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PostalCode(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidPostalCode() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e PostalCode.isValidPostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-00000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00\u0026000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00.000\")); // contains decimal characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00000\")); // contains less than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"0000000\")); // contains more than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-000001\")); // negative number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"000000\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"123456\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"999999\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(new PostalCode(VALID_POSTALCODE_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(postalCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(new PostalCode(VALID_POSTALCODE_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/model/property/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void isSameProperty() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.isSameProperty(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" Property admiraltyCopy \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(admiraltyCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(5));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d Property.class.getCanonicalName() + \"{postalCode\u003d\" + ADMIRALTY.getPostalCode()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" + \", unit\u003d\" + ADMIRALTY.getUnit() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, ADMIRALTY.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":72}},{"path":"src/test/java/seedu/address/model/property/UniquePropertiesListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesListTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList uniquePropertyList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.contains(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyNotInList_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyInList_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" Property editedAlice \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" public void add_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.add(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullTargetProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(null, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullEditedProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_targetPropertyNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyIsSameProperty_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" .build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasNonUniqueIdentity_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jolwnn"},"content":" public void remove_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jolwnn"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.remove(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jolwnn"},"content":" public void remove_propertyDoesNotExist_throwsPropertyNotFoundException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jolwnn"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.remove(BEDOK));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jolwnn"},"content":" public void remove_existingProperty_removesProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.remove(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jolwnn"},"content":" UniquePropertiesList expectedUniquePersonList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jolwnn"},"content":" assertEquals(expectedUniquePersonList, uniquePropertyList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullUniquePropertyList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((UniquePropertiesList) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_uniquePropertyList_replacesOwnListWithProvidedUniquePropertyList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(expectedUniquePropertiesList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((List\u003cProperty\u003e) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e propertyList \u003d Collections.singletonList(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(propertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_listWithDuplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e listWithDuplicateProperties \u003d Arrays.asList(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" .setProperties(listWithDuplicateProperties));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" public void add_duplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.add(ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Virusrwj223"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" -\u003e uniquePropertyList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jolwnn":18,"Virusrwj223":157}},{"path":"src/test/java/seedu/address/model/property/UnitTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class UnitTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new Unit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Unit(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidUnit() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e Unit.isValidUnit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"-00-00\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00 00\")); // wrong delimiter","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00\u002600\")); // wrong character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-00\")); // few digits in level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00-0\")); // few digits in unit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-0\")); // few digits in unit and level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-1111\")); // Too tall structure","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"148-111111\")); // Too many units, limited to 6","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-11111119\")); // Too tall structure and too many units","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"00-00\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"01-01\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"148-11111\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(new Unit(VALID_UNIT_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(unit));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(new Unit(VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":67}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedClientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.storage.JsonAdaptedClient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonAdaptedClientTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_TYPE \u003d \"invalidType\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_NAME \u003d ALICE.getName().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d ALICE.getPhone().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_EMAIL \u003d ALICE.getEmail().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_TYPE \u003d ALICE instanceof Buyer ? \"BUYER\" : \"SELLER\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_validClientDetails_returnsClient() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertEquals(ALICE, client.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedPropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"12345\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"00 00\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d ADMIRALTY.getPostalCode().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d ADMIRALTY.getUnit().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_validPropertyDetails_returnsProperty() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(ADMIRALTY, property.toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPostalCode_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(INVALID_POSTALCODE, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, INVALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(null, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PostalCode.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/storage/JsonPropertyBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorageTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonPropertyBookStorageTest\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" @TempDir","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public Path testFolder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void readPropertyBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e readPropertyBook(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private java.util.Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(String filePath) throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new JsonPropertyBookStorage(Paths.get(filePath)).readPropertyBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" : null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(readPropertyBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPropertyBook(\"notJsonFormatPropertyBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Saves {@code propertyBook} at the specified {@code filePath}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" private void savePropertyBook(ReadOnlyPropertyBook addressBook, String filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" .savePropertyBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e savePropertyBook(new PropertyBook(), null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/storage/JsonSerializableClientBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.TypicalClients;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonSerializableClientBookTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClientBookTest\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final Path TYPICAL_CLIENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final Path INVALID_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private static final Path DUPLICATE_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_typicalClientsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CLIENTS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" ClientBook typicalClientsClientBook \u003d TypicalClients.getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(clientBookFromFile, typicalClientsClientBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidClientFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_duplicateClients_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClientBook.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46}},{"path":"src/test/java/seedu/address/storage/JsonSerialzablePropertyBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.TypicalProperty;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerialzablePropertyBookTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" \"JsonSerializablePropertyBookTest\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TYPICAL_PROPERTIES_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"typicalPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" private static final Path INVALID_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"invalidPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private static final Path DUPLICATE_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"duplicatePropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_typicalPropertiesFile_success() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PROPERTIES_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook typicalPersonsAddressBook \u003d TypicalProperty.getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(propertyBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, JsonSerializablePropertyBook.MESSAGE_DUPLICATE_PROPERTY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(getTempFilePath(\"cb\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorage} class. More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorage} class. More extensive testing of AddressBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" public void clientBookReadSave() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" ClientBook original \u003d getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" storageManager.saveClientBook(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook retrieved \u003d storageManager.readClientBook().get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertEquals(original, new ClientBook(retrieved));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" public void getClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" assertNotNull(storageManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" public void propertyBookReadSave() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook original \u003d getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" storageManager.savePropertyBook(original);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook retrieved \u003d storageManager.readPropertyBook().get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(original, new PropertyBook(retrieved));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" public void getPropertyBookFilePath() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" assertNotNull(storageManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":27,"-":61}},{"path":"src/test/java/seedu/address/testutil/ClientBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Clientbook objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" * {@code ClientBook cb \u003d new ClientBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"public class ClientBookBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" private ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder(ClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder withClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Name name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Phone phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Email email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Initializes the ClientBuilder with the data of {@code ClientToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder(Client personToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d new seedu.address.model.client.Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d new seedu.address.model.client.Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d new seedu.address.model.client.Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" public Buyer buildBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return new Buyer(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public Seller buildSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Seller(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_UNIT \u003d \"08-20\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private Unit unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d new Unit(DEFAULT_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTALCODE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" SampleDataUtil.getSamplePropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Initializes the PropertyBuilder with the data of {@code propertyToCopy}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder(Property propertyToCopy) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d propertyToCopy.getUnit();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d propertyToCopy.getPostalCode();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code Unit} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withUnit(String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public Property build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" return new Property(postalCode, unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/testutil/TypicalClients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A utility class containing a list of {@code Client} objects to be used in tests.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class TypicalClients {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"heinz@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"cornelia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final Client ELLE \u003d new ClientBuilder().withName(\"Elle Meyer\").withPhone(\"94822242\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"werner@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final Client FIONA \u003d new ClientBuilder().withName(\"Fiona Kunz\").withPhone(\"94824272\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"lydia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public static final Client GEORGE \u003d new ClientBuilder().withName(\"George Best\").withPhone(\"94824422\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"anna@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Manually added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"84824242\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"stefan@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public static final Client IDA \u003d new ClientBuilder().withName(\"Ida Mueller\").withPhone(\"84821312\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"hans@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public static final Client BOB \u003d new ClientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" private TypicalClients() {} // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns an {@code ClientBook} with all the typical buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public static ClientBook getTypicalClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" ClientBook cb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" cb.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return cb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":68}},{"path":"src/test/java/seedu/address/testutil/TypicalProperty.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * A utility class containing a list of {@code Property} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class TypicalProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public static final Property ADMIRALTY \u003d new PropertyBuilder().withUnit(\"02-22\").withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final Property BEDOK \u003d new PropertyBuilder().withUnit(\"11-12\").withPostalCode(\"321456\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static PropertyBook getTypicalPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook ab \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" for (Property property : getTypicalProperties()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" ab.addProperty(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public static List\u003cProperty\u003e getTypicalProperties() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"Virusrwj223":31}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"* This is **ClientGrid**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * as a one stop e-book for property agents to store the contacts of clients and their relevant descriptions","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"* For the detailed documentation of this project, see the **[ClientGrid Product Website](https://ay2425s1-cs2103t-t16-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"thony-ui":1,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.4.0\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"You can reach us at our emails: ","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"- `E1113234@u.nus.edu.sg`","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"- `kheehou.yong@u.nus.edu`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"- `e1113214@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"- `e1155920@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"- `tan_shixin@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"### Tan Shi Xin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":"\u003cimg src\u003d\"images/apollo-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"[[github](http://github.com/apollo-tan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"* Role: Project Advisor. Handle the list feature and its documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"### Anthony Hermanto","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":"![Anthony picture](./images/thony-ui.png)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"[[github](https://github.com/thony-ui)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"[[portfolio](https://www.anthonyhermanto.com)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"* Responsibilities: Manage the team. Handle the logic for delete commands. (delete buyer and delete seller)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"### Yong Khee Hou","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"![Khee Hou picture](./images/yongkheehou.png)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"[[github](https://github.com/yongkheehou)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: Ensure well-maintained documentation for the project. Handle command to add clients (buyers/ sellers).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"### Hrishiraj Mandal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"\u003cimg src\u003d\"images/virusrwj223.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"[[github](https://github.com/Virusrwj223)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"[[portfolio](https://virusrwj223.github.io/hm)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"[[linkedin](https://www.linkedin.com/in/hrishiraj-mandal)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"* Role: Tester","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time. Handle add property to database","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"### Wee Zhuo Lin","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"\u003cimg src\u003d\"images/jolwnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"[[GitHub](https://github.com/jolwnn)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"[[portfolio](https://jolynn-wee.vercel.app)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"* Role: Integration","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"* the software to create a whole. Handle delete property commands and documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":19,"Virusrwj223":7,"apollo-tan":5,"thony-ui":7,"-":60}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"thony-ui"},"content":"* Real estate agent who needs to manage a significant number of clients and properties.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"thony-ui"},"content":"* prefer desktop apps over other types.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"thony-ui"},"content":"* can type fast.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"thony-ui"},"content":"* prefers typing to mouse interactions.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"thony-ui"},"content":"* is reasonably comfortable using CLI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"thony-ui"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an address book designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor properties the agent is in charge of while maintaining core address book functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":"|----------|-------------------|------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"yongkheehou"},"content":"| `* * *` | real estate agent | add a new client (buyer or seller) to ClientGrid | keep all their contact information organized in one place","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | delete a client (buyer or seller) from ClientGrid | keep all their contact information organized in one place |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | add new properties to client grid | keep track of my client\u0027s property details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jolwnn"},"content":"| `* * *` | real estate agent | delete a property entry from ClientGrid | remove entries that I no longer need |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about properties | easily manage my portfolio of available properties |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about buyers | match buyers with suitable properties based on their preferences |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about sellers | manage relationships and property listings efficiently |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a buyer wants to buy property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a seller wants to sell property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"yongkheehou"},"content":"(For all use cases below, the **System** is the `ClientGrid` and the **Actor** is the `real estate agent`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Use case: UC1 - Add Client (Buyer or Seller)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"1. Real estate agent requests to add a buyer/ seller to ClientGrid and passes in the buyer/ seller\u0027s name, phone number and email.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"yongkheehou"},"content":"2. ClientGrid will add the buyer/ seller with the name, phone number, and email specified by the real estate agent.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"yongkheehou"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the name/ phone number/ email format provided by the real estate agent.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"yongkheehou"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"thony-ui"},"content":"**Use case: UC2 - Delete Client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"thony-ui"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"thony-ui"},"content":"1. Real estate agent requests to delete a buyer or seller based on their phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"thony-ui"},"content":"2. ClientGrid will delete the respective client based on the phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the phone number format provided by the real estate agent .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Virusrwj223"},"content":"**Use case: UC3 - Add a property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Virusrwj223"},"content":"1. User inputs details of property","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"yongkheehou"},"content":"2. System outputs success message","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Virusrwj223"},"content":"* 1a. Invalid command detail symbols","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Virusrwj223"},"content":" * 1a1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"thony-ui"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Virusrwj223"},"content":"* 1b. Postal code number contains invalid symbols and format typical in Singapore","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Virusrwj223"},"content":" * 1b1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Virusrwj223"},"content":"* 1c. Unit number contains invalid symbols and format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Virusrwj223"},"content":" * 1c1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"jolwnn"},"content":"**Use case: UC4 - Delete Property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"jolwnn"},"content":"Guarantees:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jolwnn"},"content":"* If property listing was in the database originally, it would be removed from property database with no side effects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jolwnn"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jolwnn"},"content":"1. Real estate agent requests to delete a property listing based on the property’s postal code and unit number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jolwnn"},"content":"2. ClientGrid will delete the respective property listing and indicate success.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the postal code or unit number format provided by the real estate agent, .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"yongkheehou"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"yongkheehou"},"content":"* 1b. ClientGrid is unable to find a matching property listing entry in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"yongkheehou"},"content":" * 1b1. ClientGrid informs real estate agent that the property listing does not exist in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"yongkheehou"},"content":" * Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"thony-ui"},"content":"**Use case: UC5 - List buyers, sellers, clients or properties**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"apollo-tan"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"apollo-tan"},"content":"1. Real Estate Agent requests to view a list of buyers, sellers, clients or properties","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"apollo-tan"},"content":"2. ClientGrid will respond with the corresponding list","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"thony-ui"},"content":"Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"yongkheehou"},"content":"2. Should be able to hold up to 1000 clients and 500 properties without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"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","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"yongkheehou"},"content":"4. The client and property databases should be updated after every command successfully executed by ClientGrid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Virusrwj223"},"content":"5. Should be able to handle case of corrupted file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"yongkheehou"},"content":"* **Clients**: Buyers or Sellers of properties the real estate agent is managing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Virusrwj223"},"content":"* **Corrupted file**: Missing file and invalid data","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"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","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"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","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"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","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"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","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":31,"jolwnn":17,"Virusrwj223":16,"apollo-tan":9,"thony-ui":34,"-":376}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"# Client Grid User guide","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an **address book** designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor the buying or selling process while maintaining core address book functionality.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"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","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"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","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" * `list k/clients` : Lists all clients.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" * `addbuyer n/John p/12345678 e/john@gmail.com` : Adds a buyer whose name is `John`, phone number is `12345678` and email is `john@gmail.com`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * `deletebuyer p/81234567` : Deletes the buyer with contact number `81234567`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * `addproperty c/124894 u/15-20` : Adds a property with postal code 124894 and unit number #15-20.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" * `deleteproperty c/124894 u/15-20` : Deletes the property with postal code 124894 and unit number #15-20.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"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","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"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","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"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","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":69,"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","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"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","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples: ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"apollo-tan"},"content":"### Listing address book records: `list`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"apollo-tan"},"content":"Shows a list of all existing properties, sellers, buyers, or clients in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"apollo-tan"},"content":"Format: `list k/KEY`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"apollo-tan"},"content":"* The `list` command displays records based on the specified `KEY`. ","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"apollo-tan"},"content":"* The `KEY` must be one of the following: `properties`, `buyers`, `sellers`, or `clients`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"apollo-tan"},"content":" * `buyers`: Lists all buyers in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"apollo-tan"},"content":" * `sellers`: Lists all sellers in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"apollo-tan"},"content":" * `clients`: Lists all buyers and sellers (i.e. clients) combined.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"apollo-tan"},"content":" * `properties`: Lists all properties in the database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"apollo-tan"},"content":"* If an invalid `KEY` is provided, an error message will be displayed.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"apollo-tan"},"content":"Key Considerations:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"apollo-tan"},"content":"* Only accepts \"properties\", \"buyers\", \"sellers\", and \"clients\" (case insensitive) as valid inputs for `k/KEY`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":"* The `KEY` ignores extra/leading/trailing spaces. Extra/leading/trailing spaces will be trimmed and the name will be converted into an array of words. The `KEY` also ignores UPPER/lower case. All names will be converted to lower case and checked against the list of valid keys.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"apollo-tan"},"content":"* If the user provides an invalid key, the system will respond with an error message indicating that only the valid keys are accepted.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jolwnn"},"content":"* `list k/buyers` displays a list of all existing buyers in the address book.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" ![result for \u0027list k/sellers\u0027](images/list.png)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":"### Adding a buyer : `addbuyer`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jolwnn"},"content":"Add a specified buyer into the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":"Format: `addbuyer n/BUYER_NAME p/BUYER_PHONE_NUMBER e/BUYER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":"* Adds a buyer with the specified `BUYER_NAME`, `BUYER_PHONE_NUMBER`, and `BUYER_EMAIL`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jolwnn"},"content":"* The `BUYER_NAME` ignores extra/leading/trailing spaces. Extra/leading/trailing spaces will be trimmed and the name will be converted into an array of words. The `BUYER_NAME` also ignores UPPER/lower case. All names will be converted to lower case and checked against the in-memory database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jolwnn"},"content":"* The `BUYER_PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"* The `BUYER_EMAIL` should follow the format local-part@domain and adhere to the following constraints: The local-part must consist only of alphanumeric characters and allowed special characters, with no special characters at the beginning or end. After the local-part, there must be an \u0027@\u0027 followed by the domain name. The domain name consists of domain labels separated by periods. Each domain label must start and end with an alphanumeric character and may contain hyphens in between. Additionally, the domain must end with a domain label that is at least two characters long.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"Examples:","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"* `addbuyer n/John p/83456789 e/john@gmail.com` adds a buyer whose name is `John`, phone number is `83456789` and email is `john@gmail.com`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Virusrwj223"},"content":" ![result for \u0027addbuyer n/John p/83456789 e/john@gmail.com\u0027](images/addbuyer.png)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":"### Adding a seller : `addseller`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jolwnn"},"content":"Add a specified seller into the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":"Format: `addseller n/SELLER_NAME p/SELLER_PHONE_NUMBER e/SELLER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":"* Adds a seller with the specified `SELLER_NAME`, `SELLER_PHONE_NUMBER`, and `SELLER_EMAIL`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jolwnn"},"content":"* The `SELLER_NAME` ignores extra/leading/trailing spaces. Extra/leading/trailing spaces will be trimmed and the name will be converted into an array of words. The `SELLER_NAME` also ignores UPPER/lower case. All names will be converted to lower case and checked against the in-memory database.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jolwnn"},"content":"* The `SELLER_PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":"* The `SELLER_EMAIL` should follow the format local-part@domain and adhere to the following constraints: The local-part must consist only of alphanumeric characters and allowed special characters, with no special characters at the beginning or end. After the local-part, there must be an \u0027@\u0027 followed by the domain name. The domain name consists of domain labels separated by periods. Each domain label must start and end with an alphanumeric character and may contain hyphens in between. Additionally, the domain must end with a domain label that is at least two characters long.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":"Examples:","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":"* `addseller n/Mary p/83456789 e/mary@gmail.com` adds a seller whose name is `Mary`, phone number is `83456789` and email is `mary@gmail.com`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Virusrwj223"},"content":" ![result for \u0027addseller n/Mary p/83456789 e/mary@gmail.com\u0027](images/addseller.png)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"thony-ui"},"content":"### Deleting a buyer : `deletebuyer`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jolwnn"},"content":"Deletes the specified buyer from the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"thony-ui"},"content":"Format: `deletebuyer p/PHONE_NUMBER`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"thony-ui"},"content":"* Deletes the buyer with the specified `PHONE_NUMBER`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jolwnn"},"content":"* The `PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":"* `deletebuyer p/83456789` deletes the buyer with phone number `83456789` from the client book.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" ![result for \u0027deletebuyer p/83456789\u0027](images/deletebuyer.png)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"thony-ui"},"content":"### Deleting a seller : `deleteseller`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"jolwnn"},"content":"Deletes the specified seller from the client book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"thony-ui"},"content":"Format: `deleteseller p/PHONE_NUMBER`","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"thony-ui"},"content":"* Deletes the seller with the specified `PHONE_NUMBER`.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"jolwnn"},"content":"* The `PHONE_NUMBER` must be 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":"* `deleteseller p/83456789` deletes the seller with phone number `83456789` from the client book.","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":" ![result for \u0027deleteseller p/83456789\u0027](images/deleteseller.png)","lastModifiedDate":"2024-10-17","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":"### Adding a property : `addproperty`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"jolwnn"},"content":"Add a specified property into the property book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":"Format: `addproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":"* Adds a property with the specified `POSTAL_CODE` and `UNIT_NUMBER`.","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"jolwnn"},"content":"* The `POSTAL_CODE` must be exactly 6 digits with each digit in the range [0-9]. It does not accept any non-integer characters or spaces.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"jolwnn"},"content":"* The `UNIT_NUMBER` comprises of two numbers delimited by exactly one dash(-). On either side of the dash are numbers comprising of two or more digits. The range of numbers of the left hand side of the dash is [00-148] and the right hand side is [00-111110]. Other than the dash, other non-integer characters or spaces are not accepted.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":"Examples:","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"jolwnn"},"content":"* `addproperty c/124894 u/15-20` adds a property with postal code `124894` and unit number `15-20`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" ![result for \u0027addproperty c/124894 u/15-20\u0027](images/addproperty.png)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"jolwnn"},"content":"### Deleting a property : `deleteproperty`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"jolwnn"},"content":"Deletes a specified property from the property book of ClientGrid.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"jolwnn"},"content":"Format: `deleteproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"jolwnn"},"content":"* Deletes a property with the specified `POSTAL_CODE` and `UNIT_NUMBER`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"jolwnn"},"content":"* The `POSTAL_CODE` must be exactly 6 digits with each digit in the range [0-9]. It does not accept any non-integer characters or spaces.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"jolwnn"},"content":"* The `UNIT_NUMBER` comprises of two numbers delimited by exactly one dash(-). On either side of the dash are numbers comprising of two or more digits. The range of numbers of the left hand side of the dash is [00-148] and the right hand side is [00-111110]. Other than the dash, other non-integer characters or spaces are not accepted.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"jolwnn"},"content":"Examples:","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"jolwnn"},"content":"* `deleteproperty c/124894 u/15-20` deletes a property with postal code `124894` and unit number `15-20`.","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"jolwnn"},"content":" ![result for \u0027deleteproperty c/124894 u/15-20\u0027](images/deleteproperty.png)","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"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","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":271,"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","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":276,"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","isFullCredit":false},{"lineNumber":277,"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","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"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","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":295,"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","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":304,"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","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"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","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"apollo-tan"},"content":"**List** | `list k/KEY`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Add Buyer** | `addbuyer n/BUYER_NAME p/BUYER_PHONE_NUMBER e/BUYER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"yongkheehou"},"content":"**Add Seller** | `addseller n/SELLER_NAME p/SELLER_PHONE_NUMBER e/SELLER_EMAIL`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"**Delete Buyer** | `deletebuyer p/PHONE_NUMBER`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"**Delete Seller** | `deleteseller p/PHONE_NUMBER`","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Virusrwj223"},"content":"**Add Property** | `addproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"**Delete Property** | `deleteproperty c/POSTAL_CODE u/UNIT_NUMBER`","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false}],"authorContributionMap":{"jolwnn":34,"yongkheehou":32,"Virusrwj223":17,"apollo-tan":27,"thony-ui":12,"-":195}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eClientGrid\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-T16-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"thony-ui":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# ClientGrid","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"**ClientGrid 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-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"* If you are interested in using ClientGrid, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"* If you are interested about developing ClientGrid, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"* This project is based on the ClientGrid-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"thony-ui":3,"-":15}},{"path":"setup-hooks.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"#!/bin/sh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"# Copy pre-commit hook to the .git/hooks directory","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"cp hooks/pre-commit .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# Make the pre-commit hook executable","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"chmod +x .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"echo \"Git hooks installed.\"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"thony-ui":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.ClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.PropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"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","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage \u003d new JsonPropertyBookStorage(userPrefs.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(userPrefs.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage, clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"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","isFullCredit":false},{"lineNumber":82,"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","isFullCredit":false},{"lineNumber":83,"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","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e propertyBookOptional;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e clientBookOptional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook initialPropertyData;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook initialClientData;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" propertyBookOptional \u003d storage.readPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" if (!propertyBookOptional.isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d propertyBookOptional.orElseGet(SampleDataUtil::getSamplePropertyBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" logger.warning(\"Data file at \" + storage.getPropertyBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" + \" Will be starting with an empty PropertyBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" clientBookOptional \u003d storage.readClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" if (!clientBookOptional.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Creating a new client data file \" + storage.getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" + \" populated with a sample ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d clientBookOptional.orElseGet(SampleDataUtil::getSampleClientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" System.out.println(initialClientData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" logger.warning(\"Data file at \" + storage.getClientBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" + \" Will be starting with an empty ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" return new ModelManager(initialData, userPrefs, initialPropertyData, initialClientData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"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 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\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":22,"-":184}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" * Returns an unmodifiable view of the filtered list of persons","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" * Returns an unmodifiable view of the filtered list of clients (containing both buyers and sellers)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" ObservableList\u003cProperty\u003e getFilteredPropertyList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":3,"apollo-tan":13,"-":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" storage.saveClientBook(model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" storage.savePropertyBook(model.getPropertyBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" public ObservableList\u003cProperty\u003e getFilteredPropertyList() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" return model.getFilteredPropertyList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"apollo-tan"},"content":" public BooleanProperty getIsDisplayClientsProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"apollo-tan"},"content":" return model.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":1,"apollo-tan":13,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.LinkedHashSet;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .sorted() // Sorting the strings","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .collect(Collectors.toCollection(LinkedHashSet::new)); // To maintain the sorted order","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public static String format(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" builder.append(client instanceof Buyer ? ClientTypes.BUYER.toString() + \"; \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" : ClientTypes.SELLER.toString() + \"; \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" .append(client.getName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .append(client.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" * Formats the {@code property} for display to the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public static String format(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" builder.append(\"PostalCode: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getPostalCode())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .append(\"; Unit: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getUnit());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" return builder.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":12,"Virusrwj223":13,"thony-ui":9,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Buyer} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and utilizes its functionality to add a specific type of client: {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddBuyerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addbuyer\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addbuyer command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a buyer to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new buyer, with a placeholder for the buyer\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_BUYER \u003d \"New buyer added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate buyer. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_BUYER \u003d \"This buyer already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddBuyerCommand} to add the specified {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param buyer The {@code Buyer} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand(Buyer buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the buyer to the model if the buyer does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the buyer was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the buyer already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd) \u0026\u0026 toAdd instanceof Buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_BUYER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddBuyerCommand instances and their buyer clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddBuyerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand otherAddCommand \u003d (AddBuyerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Represents an abstract command to add a {@link Client} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This class is designed to be extended by specific commands that add different types of clients,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * such as buyers or sellers.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public abstract class AddClientCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * A string describing the expected parameters for adding a client.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Includes name, phone number, and email.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_PARAMETERS \u003d PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_EMAIL + \"EMAIL\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /** The client to be added to the address book. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" protected final Client toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddClientCommand} to add the specified {@code Client}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * @param client The client to be added. Must not be null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.toAdd \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of this AddClientCommand, showing the client to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The string is generated using {@link ToStringBuilder}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @return A string representation of the AddClientCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":51}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Adds a {@code Property} to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * Extends {@link AddPropertyCommand} and uses its functionality to add a specific type of property: {@code Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public static final String COMMAND_WORD \u003d \"addproperty\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_POSTALCODE + \"POSTALCODE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + \"UNIT \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This property already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private final Property toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" toAdd \u003d property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Executes the AddPropertyCommand.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Adds the property to the model if the property does not already exist in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @return A {@link CommandResult} with a success message if the property was added.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (model.hasProperty(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" model.addProperty(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof AddPropertyCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand otherAddCommand \u003d (AddPropertyCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/logic/commands/AddSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Seller} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and uses its functionality to add a specific type of client: {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddSellerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addseller\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addseller command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a seller to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new seller, with a placeholder for the seller\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_SELLER \u003d \"New seller added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate seller. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_SELLER \u003d \"This seller already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddSellerCommand} to add the specified {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param seller The {@code Seller} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand(Seller seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the seller to the model if the seller does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the seller was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (toAdd instanceof Seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_SELLER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddSellerCommand instances and their seller clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddSellerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand otherAddCommand \u003d (AddSellerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a buyer in the buyer management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deletebuyer\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the buyer identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Buyer: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteBuyerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete buyer command and removes the buyer from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Buyer not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteBuyerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteBuyerCommand} with the same phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteBuyerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand d \u003d (DeleteBuyerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":75}},{"path":"src/main/java/seedu/address/logic/commands/DeletePropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" * Deletes a property using its postal code and unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" public static final String COMMAND_WORD \u003d \"deleteproperty\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" + \": Deletes the property unit identified by its postal code and unit number.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"POSTAL_CODE (must follow the Singapore postal code format i.e. be a 6 digit integer \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" + \"between 000000 to 999999) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"UNIT_NUMBER (in the format XXX-XXX) \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"118420 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"08-08 \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_DELETE_PROPERTY_SUCCESS \u003d \"Deleted property: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" private final Unit unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * Constructs a {@code DeletePropertyCommand} with the specified postal code and unit number to delete a property.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" * @param postalCode The postal code of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" * @param unitNumber The unit number of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand(PostalCode postalCode, Unit unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" Property propertyToDelete \u003d model.getFilteredPropertyList().stream()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" .filter(property -\u003e property.getPostalCode().equals(postalCode)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 property.getUnit().equals(unitNumber))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" .findFirst().orElseThrow(() -\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" new CommandException(String.format(\"Property not found. \", postalCode,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" unitNumber)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" model.deleteProperty(propertyToDelete);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PROPERTY_SUCCESS, Messages.format(propertyToDelete)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" if (!(other instanceof DeletePropertyCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand otherDeletePropertyCommand \u003d (DeletePropertyCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":" return postalCode.equals(otherDeletePropertyCommand.postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 unitNumber.equals(otherDeletePropertyCommand.unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":" .add(\"unitNumber\", unitNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jolwnn"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":85}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a seller in the seller management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deleteseller\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the seller identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Seller: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteSellerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete seller command and removes the seller from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Seller not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteSellerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteSellerCommand} with the same phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteSellerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand d \u003d (DeleteSellerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":74}},{"path":"src/main/java/seedu/address/logic/commands/ListBuyersCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Lists all buyers in the client list to the user.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListBuyersCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"buyers\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all buyers in the client list and sets the display to show clients.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * @param model The model which contains the client data.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * @return A CommandResult containing feedback to the user that all buyers have been listed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" // Logic to list buyers","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" model.updateFilteredClientList(Model.PREDICATE_SHOW_ALL_BUYERS_ONLY);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":28}},{"path":"src/main/java/seedu/address/logic/commands/ListClientsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Lists all clients (both buyers and sellers) in the client list to the user.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListClientsCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"clients\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all clients (buyers and sellers) and sets the display to show clients.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * @param model The model which contains the client data.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * @return A CommandResult containing feedback to the user that all clients have been listed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" // Logic to list clients (i.e. buyers and sellers)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" model.updateFilteredClientList(Model.PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":28}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":" * Abstract class that serves as the base for commands to list different entities in the application","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":" * (such as buyers, sellers, clients, and properties). Subclasses of {@code ListCommand} are","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * responsible for specifying which entities are to be listed and implementing the listing logic.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public abstract class ListCommand extends Command {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * The main command word used to trigger the list functionality in the application.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * Usage message to guide users on how to use the \u0027list\u0027 command. It provides examples of listing","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * buyers, sellers, clients, or properties from the database, and clarifies the allowed keys.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all existing properties, sellers, \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" + \"buyers, or clients in the database.\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" + \"Command format: \" + COMMAND_WORD + \" k/KEY\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" + \"Example commands:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" + \"1. List all the buyers: \" + COMMAND_WORD + \" k/buyers\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" + \"2. List all the properties: \" + COMMAND_WORD + \" k/properties\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" + \"Parameter considerations:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" + \"The key must be one of the following: \\\"buyers\\\", \\\"sellers\\\", \\\"clients\\\", or \"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" + \"\\\"properties\\\".\\n\"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" + \"Only these four types of records are stored in the database.\\n\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" * Success message template used to confirm that the listing operation has been successfully executed","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" * for a specific type of entity. The placeholder will be replaced with the type of entity listed","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" * (e.g., buyers, sellers, clients, or properties).","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" * Executes the list command to retrieve and display a specific category of records from the model.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" * @param model The {@code Model} which contains the application\u0027s data and logic for filtering","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" * and retrieving records.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code CommandResult} containing the feedback message for the user after the command is executed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" public abstract CommandResult execute(Model model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"apollo-tan":36,"-":13}},{"path":"src/main/java/seedu/address/logic/commands/ListPropertiesCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Command to list all properties in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListPropertiesCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * The keyword used to trigger the listing of properties in the database.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"properties\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all properties in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @param model The {@code Model} which contains the application data and logic.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code CommandResult} containing the feedback message for the user after the command is executed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" // Logic to display properties","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayProperties();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":31}},{"path":"src/main/java/seedu/address/logic/commands/ListSellersCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":" * Command to list all sellers in the client book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"public class ListSellersCommand extends ListCommand {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * The keyword used to trigger the listing of sellers in the database.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" public static final String KEY_WORD \u003d \"sellers\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * Executes the command to list all sellers in the client book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @param model The {@code Model} which contains the application data and logic.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code CommandResult} containing the feedback message for the user after the command is executed.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" // Filter the client list to only show sellers","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" model.updateFilteredClientList(Model.PREDICATE_SHOW_ALL_SELLERS_ONLY);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" // Set the model to display the clients","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" model.setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Return success message with the appropriate entity type","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, KEY_WORD));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":36}},{"path":"src/main/java/seedu/address/logic/parser/AddBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddBuyerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParser implements Parser\u003cAddBuyerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddBuyerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddBuyerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddBuyerCommand} that adds a buyer based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Create a new Buyer using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":64}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Parses input arguments and creates a new {@link AddPropertyCommand} object.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * (postalCode, Unit) for creating a {@link Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParser implements Parser\u003cAddPropertyCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(postalCode, unit);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommand(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":51}},{"path":"src/main/java/seedu/address/logic/parser/AddSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddSellerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParser implements Parser\u003cAddSellerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddSellerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddSellerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddSellerCommand} that adds a seller based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Create a new Seller using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":65}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" case AddBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" case AddSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"thony-ui"},"content":" case DeleteBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"thony-ui"},"content":" case DeleteSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" case AddPropertyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jolwnn"},"content":" case DeletePropertyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommandParser().parse(arguments);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":9,"jolwnn":4,"Virusrwj223":4,"apollo-tan":1,"thony-ui":6,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" public static final Prefix PREFIX_KEY \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_POSTALCODE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_UNITNUMBER \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"apollo-tan":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteBuyerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParser implements Parser\u003cDeleteBuyerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteBuyerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteBuyerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteBuyerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/DeletePropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" * Parses input arguments and creates a new DeletePropertyCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParser implements Parser\u003cDeletePropertyCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePropertyCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" * and returns a DeletePropertyCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommand(postalCode, unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":48}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteSellerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParser implements Parser\u003cDeleteSellerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteSellerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteSellerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteSellerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_KEY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListBuyersCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListClientsCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListPropertiesCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListSellersCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" * Parses input arguments and creates a new {@code ListCommand} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ListCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * and returns a {@code ListCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code ListCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" * @throws ParseException If the user input does not conform to the expected format or the key is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_KEY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" String keyArg \u003d argMultimap.getValue(PREFIX_KEY).orElse(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" if (keyArg.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" // Switch case to handle different key values","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" switch (keyArg.toLowerCase()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" case ListClientsCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" return new ListClientsCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" case ListBuyersCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" return new ListBuyersCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" case ListSellersCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" return new ListSellersCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" case ListPropertiesCommand.KEY_WORD:","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" return new ListPropertiesCommand();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"apollo-tan":52}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String postalCode} into a {@code postalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jolwnn"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jolwnn"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jolwnn"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jolwnn"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jolwnn"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String unitNumber} into a {@code unitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" public static Unit parseUnit(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" if (!Unit.isValidUnit(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" return new Unit(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Name parseClientName(String name) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Name(trimmedName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Phone parseClientPhone(String phone) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" if (!seedu.address.model.client.Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(seedu.address.model.client.Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Phone(trimmedPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Email parseClientEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Email(trimmedEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":32,"yongkheehou":46,"-":124}},{"path":"src/main/java/seedu/address/model/ClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.UniqueClientList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Wraps all data at the client-book level","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Duplicates are not allowed (by .isSameClient comparison)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientBook implements ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList clients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * among constructors.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" clients \u003d new UniqueClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook() {}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Creates an ClientBook using the Clients in the {@code toBeCopied}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBook(ReadOnlyClientBook toBeCopied) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" this.clients.setClients(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Resets the existing data of this {@code ClientBook} with {@code newData}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" public void resetData(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" //// client-level operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return clients.contains(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" clients.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" clients.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" * Removes {@code key} from this {@code ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" public void removeClient(Client key) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" clients.remove(key);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" //// util methods","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof ClientBook)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" ClientBook otherClientBook \u003d (ClientBook) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" return clients.equals(otherClientBook.clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" return clients.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":130}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_BUYERS_ONLY \u003d Client::isBuyer;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_SELLERS_ONLY \u003d Client::isSeller;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" * Returns the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" * Sets the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" void setClientBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" * Replaces client book data with the data in {@code clientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" void setClientBook(ReadOnlyClientBook clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" /** Returns the ClientBook */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook getClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a Client with the same identity as {@code Client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" * Deletes the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" * The person must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" * Adds the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" * {@code client} must not already exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" void addClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered client list */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" void updateFilteredClientList(Predicate\u003cClient\u003e predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs\u0027 property book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" void setPropertyBookFilePath(Path propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook getPropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a person with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" boolean hasProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jolwnn"},"content":" * Deletes the given property.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jolwnn"},"content":" * {@code property} must exist in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jolwnn"},"content":" void deleteProperty(Property property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" * Adds the given property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" * {@code property} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":" void addProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"jolwnn"},"content":" /** Returns an unmodifiable view of the filtered property list */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"apollo-tan"},"content":" ObservableList\u003cProperty\u003e getFilteredPropertyList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jolwnn"},"content":" * Updates the filter of the filtered property list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jolwnn"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jolwnn"},"content":" void updateFilteredPropertyList(Predicate\u003cProperty\u003e predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"apollo-tan"},"content":" void setDisplayClients();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"apollo-tan"},"content":" void setDisplayProperties();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"jolwnn":12,"Virusrwj223":28,"apollo-tan":10,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.SimpleBooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private final PropertyBook propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" private final ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" private final FilteredList\u003cProperty\u003e filteredProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // note that filteredClients may be removed if we decide not to keep the filtering feature","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" private final BooleanProperty isDisplayClients \u003d new SimpleBooleanProperty(true);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook propertyBook, ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" + userPrefs + \" and property prefs \" + propertyBook + \" and client book \" + clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBook \u003d new PropertyBook(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d new ClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" this.filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" this.filteredClients \u003d new FilteredList\u003c\u003e(this.clientBook.getClientList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" this.filteredProperties \u003d new FilteredList\u003c\u003e(this.propertyBook.getPropertyList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" this(new AddressBook(), new UserPrefs(), new PropertyBook(), new ClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"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","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" return userPrefs.getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path clientBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setAddressBookFilePath(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"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","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" this.clientBook.resetData(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" return clientBook.hasClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" clientBook.removeClient(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage jsonClientBookStorage \u003d new JsonClientBookStorage(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" jsonClientBookStorage.saveClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" System.out.println(\"Error while saving ClientBook: \" + e.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" clientBook.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Client 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-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the list of {@code Client} backed by the internal list of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" * {@code versionedClientBook}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" return filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Property \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":" return userPrefs.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" userPrefs.setPropertyBookFilePath(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"jolwnn"},"content":" public void deleteProperty(Property target) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"jolwnn"},"content":" propertyBook.removeProperty(target);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"jolwnn"},"content":" try {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"jolwnn"},"content":" JsonPropertyBookStorage jsonPropertyBookStorage \u003d new JsonPropertyBookStorage(propertyBookFilePath);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"jolwnn"},"content":" jsonPropertyBookStorage.savePropertyBook(propertyBook);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"jolwnn"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"jolwnn"},"content":" System.out.println(\"Error while saving PropertyBook: \" + e.getMessage());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook.hasProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"jolwnn"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Property 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-10-14","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"apollo-tan"},"content":" * Returns an unmodifiable view of the list of {@code Property} backed by the internal list of","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"jolwnn"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"apollo-tan"},"content":" public ObservableList\u003cProperty\u003e getFilteredPropertyList() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"apollo-tan"},"content":" return filteredProperties;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"jolwnn"},"content":" public void updateFilteredPropertyList(Predicate\u003cProperty\u003e predicate) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"jolwnn"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"apollo-tan"},"content":" filteredProperties.setPredicate(predicate);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"apollo-tan"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Managing UI \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-10-14","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"apollo-tan"},"content":" public BooleanProperty getIsDisplayClientsProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"apollo-tan"},"content":" return isDisplayClients;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayClients() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"apollo-tan"},"content":" isDisplayClients.set(true);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":" isDisplayClients.set(false);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":79,"jolwnn":20,"Virusrwj223":37,"apollo-tan":31,"-":136}},{"path":"src/main/java/seedu/address/model/PropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.UniquePropertiesList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Duplicates are not allowed (by .isSameProperty comparison)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBook implements ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList properties;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" properties \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook() {}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Creates a PropertyBook using the Property in the {@code toBeCopied}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook(ReadOnlyPropertyBook toBeCopied) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Resets the existing data of this {@code PropertyBook} with {@code newData}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void resetData(ReadOnlyPropertyBook newData) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" setProperty(newData.getPropertyList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of the property list with {@code properties}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" this.properties.setProperties(properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property p) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" properties.add(p);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return properties.contains(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":" * Removes {@code key} from this {@code PropertyBook}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" public void removeProperty(Property key) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":" properties.remove(key);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" .add(\"properties\", properties)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e getPropertyList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return properties.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PropertyBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook otherPropertyBook \u003d (PropertyBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" return properties.equals(otherPropertyBook.properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" return properties.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jolwnn":8,"Virusrwj223":106}},{"path":"src/main/java/seedu/address/model/ReadOnlyClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Unmodifiable view of a client book","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public interface ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the client list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyPropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Unmodifiable view of a property book","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"public interface ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Returns an unmodifiable view of the property list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * This list will not contain any duplicate property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" ObservableList\u003cProperty\u003e getPropertyList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":2,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return clientBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" this.clientBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":10,"Virusrwj223":10,"-":88}},{"path":"src/main/java/seedu/address/model/client/Buyer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Buyer in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Buyer extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Buyer object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Buyer(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are buyers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.BUYER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Buyer)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Buyer otherPerson \u003d (Buyer) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.BUYER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" public String getTypeString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" return ClientTypes.BUYER.getType();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"apollo-tan":5,"thony-ui":9}},{"path":"src/main/java/seedu/address/model/client/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Represents a Client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public abstract class Client {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" protected final Name name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" protected final Phone phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" protected final Email email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Client(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public Name getName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" return name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public Email getEmail() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" return email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public abstract boolean isSameClient(Client otherClient);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" public abstract String getTypeString();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":39,"apollo-tan":1,"thony-ui":2}},{"path":"src/main/java/seedu/address/model/client/ClientTypes.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Represents the different types of clients in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * This enum provides two types of clients: BUYER and SELLER.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Each client type is associated with a specific string representation.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public enum ClientTypes {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a buyer client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" BUYER(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Represents a seller client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" SELLER(\"seller\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_TYPE_CONSTRAINTS \u003d \"Client types should only be `BUYER` or `SELLER`\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code ClientTypes} with the specified type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * @param type The string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientTypes(String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * @return The client type as a string.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public String getType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" return type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidClientType(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" return test.equals(ClientTypes.BUYER.toString()) || test.equals(ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50}},{"path":"src/main/java/seedu/address/model/client/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Email {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * @param email A valid email address.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public Email(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" value \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/model/client/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Name {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public Name(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":66}},{"path":"src/main/java/seedu/address/model/client/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Phone {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \"Phone numbers should only contain 8 numbers in the range [0-9] and can only start with ‘8’ or ‘9’\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"^[89]\\\\d{7}$\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public Phone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" value \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/model/client/Seller.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Seller in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Seller extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Seller object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Seller(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are sellers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Seller)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Seller otherPerson \u003d (Seller) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.SELLER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" public String getTypeString() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" return ClientTypes.SELLER.getType();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"apollo-tan":4,"thony-ui":8}},{"path":"src/main/java/seedu/address/model/client/UniqueClientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * A list of clients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * A client is considered unique by comparing using {@code Client#isSameClient(Client)}. As such, adding and updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * clients uses Client#isSameClient(Client) for equality so as to ensure that the client being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * unique in terms of identity in the UniqueClientList. However, the removal of a client uses Client#equals(Object) so","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * as to ensure that the client with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * @see Client#isSameClient(Client)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientList implements Iterable\u003cClient\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns true if the list contains an equivalent client as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public boolean contains(Client toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return internalList.stream().anyMatch(toCheck::isSameClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void add(Client toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Replaces the client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" if (!target.isSameClient(editedClient) \u0026\u0026 contains(editedClient)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" internalList.set(index, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public void remove(Client toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" public void setClients(UniqueClientList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of this list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" if (!clientsAreUnique(clients)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public Iterator\u003cClient\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof UniqueClientList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList otherUniqueClientList \u003d (UniqueClientList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return internalList.equals(otherUniqueClientList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * Returns true if {@code clients} contains only unique clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" private boolean clientsAreUnique(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" for (int i \u003d 0; i \u003c clients.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" for (int j \u003d i + 1; j \u003c clients.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" if (clients.get(i).isSameClient(clients.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":150}},{"path":"src/main/java/seedu/address/model/client/exceptions/ClientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation is unable to find the specified client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6}},{"path":"src/main/java/seedu/address/model/client/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * identity and are of the same type (either Buyer or Seller).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":11}},{"path":"src/main/java/seedu/address/model/property/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property postal code in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; postal code is valid as declared in {@link #isValidPostalCode(String)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Postal Code numbers should only contain positive numbers, and it should be exactly 6 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * @param postalCode A valid phone number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidPostalCode(postalCode), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" value \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid postcal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidPostalCode(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PostalCode)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" PostalCode otherPostalCode \u003d (PostalCode) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherPostalCode.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class Property {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private final Unit unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public Property(PostalCode postalCode, Unit unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" return postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Unit getUnit() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same unit number and postal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same identity and data fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * This defines a stronger notion of equality between two properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return Objects.hash(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .add(\"unit\", unit)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":82}},{"path":"src/main/java/seedu/address/model/property/UniquePropertiesList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * A list of properties that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * A property is considered unique by comparing using {@code Property#isSameProperty(Property)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * As such, adding and updating of properties uses {@code Property#isSameProperty(Property)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * for equality to ensure uniqueness.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * @see Property#isSameProperty(Property)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesList implements Iterable\u003cProperty\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if the list contains an equivalent property as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public boolean contains(Property toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" return internalList.stream().anyMatch(toCheck::isSameProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void add(Property toAdd) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" public void remove(Property toRemove) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the property {@code target} in the list with {@code editedProperty}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" * The property identity of {@code editedProperty} must not be the same as another existing property in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(Property target, Property editedProperty)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" throws DuplicatePropertyException, PropertyNotFoundException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(target, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" if (!target.isSameProperty(editedProperty) \u0026\u0026 contains(editedProperty)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" internalList.set(index, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(UniquePropertiesList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of this list with {@code properties}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" * {@code properties} must not contain duplicate properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(List\u003cProperty\u003e properties) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" if (!propertiesAreUnique(properties)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" * Returns an iterator over the properties in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" * @return An iterator over the properties.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" public Iterator\u003cProperty\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof UniquePropertiesList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList otherUniquePropertyList \u003d (UniquePropertiesList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" return internalList.equals(otherUniquePropertyList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if {@code properties} contains only unique properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" private boolean propertiesAreUnique(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" for (int i \u003d 0; i \u003c properties.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" for (int j \u003d i + 1; j \u003c properties.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" if (properties.get(i).isSameProperty(properties.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jolwnn":11,"Virusrwj223":143}},{"path":"src/main/java/seedu/address/model/property/Unit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property unit in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; unit is valid as declared in {@link #isValidUnit(String)}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class Unit {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Unit numbers should only contain numbers delimited by a dash, and it should be minimally 2 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" \"^(?:\\\\d{2}|1[0-3]\\\\d|14[0-8])-(?:\\\\d{2,5}|10\\\\d{4}|110\\\\d{3}|1110\\\\d{2}|11110\\\\d|111110)$\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code Unit}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * @param unit A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public Unit(String unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidUnit(unit), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" value \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidUnit(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Unit)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit otherUnit \u003d (Unit) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherUnit.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/exceptions/DuplicatePropertyException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation will result in duplicate Property (Properties are considered duplicates if they have the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" * same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"public class DuplicatePropertyException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" public DuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":11}},{"path":"src/main/java/seedu/address/model/property/exceptions/PropertyNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" public PropertyNotFoundException() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":8}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public static Client[] getSampleClients() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Client[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"87438807\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"Bernice Yu\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"99272758\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"berniceyu@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"93210283\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"charlotte@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"David Li\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"91031282\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"lidavid@example.com\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public static ReadOnlyClientBook getSampleClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ClientBook sampleAb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" for (Client sampleClient : getSampleClients()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" return sampleAb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" public static Property[] getSampleProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return new Property[] {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123456\"), new Unit(\"11-11\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123457\"), new Unit(\"00-00\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" };","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public static ReadOnlyPropertyBook getSamplePropertyBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook sampleAb \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" for (Property sampleProperty : getSampleProperty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" sampleAb.addProperty(sampleProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" return sampleAb;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"yongkheehou":28,"Virusrwj223":20,"-":60}},{"path":"src/main/java/seedu/address/storage/ClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a storage for {@link seedu.address.model.ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"public interface ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Returns ClientBook data as a {@link ReadOnlyClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @see #getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Saves the given {@link ReadOnlyClientBook} to the storage.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * @param clientBook cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * @see #saveClientBook(ReadOnlyClientBook)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * Jackson-friendly version of {@link Client}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonAdaptedClient {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Client\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final String name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private final String phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private final String email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"type\") String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" type \u003d source instanceof Buyer ? ClientTypes.BUYER.toString() : ClientTypes.SELLER.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Converts this Jackson-friendly adapted client object into the model\u0027s {@code Client} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" ClientTypes.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" if (!ClientTypes.isValidClientType(type)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(ClientTypes.CLIENT_TYPE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return Objects.equals(type, ClientTypes.BUYER.toString()) ? new Buyer(modelName, modelPhone, modelEmail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" : new Seller(modelName, modelPhone, modelEmail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":93}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedProperty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * Jackson-friendly version of {@link Property}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final String postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private final String unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonAdaptedProperty} with the given property details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(@JsonProperty(\"postalCode\") String postalCode, @JsonProperty(\"unit\") String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code Property} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(Property source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d source.getPostalCode().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d source.getUnit().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" * Converts this Jackson-friendly adapted property object into the model\u0027s {@code Property} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public Property toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" if (postalCode \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" if (!PostalCode.isValidPostalCode(postalCode)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" final PostalCode modelPostalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (unit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" if (!Unit.isValidUnit(unit)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" final Unit modelUnit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" return new Property(modelPostalCode, modelUnit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":61}},{"path":"src/main/java/seedu/address/storage/JsonClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A class to access ClientBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class JsonClientBookStorage implements ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClientBookStorage.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private Path filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public JsonClientBookStorage(Path filePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #readClientBook()}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cJsonSerializableClientBook\u003e jsonClientBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" filePath, JsonSerializableClientBook.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" if (!jsonClientBook.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return Optional.of(jsonClientBook.get().toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #saveClientBook(ReadOnlyClientBook)}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClientBook(clientBook), filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/storage/JsonPropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * A class to access PropertyBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorage implements PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private Path filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public JsonPropertyBookStorage(Path filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #readPropertyBook()}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cJsonSerializablePropertyBook\u003e jsonPropertyBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" filePath, JsonSerializablePropertyBook.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (!jsonPropertyBook.isPresent()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return Optional.of(jsonPropertyBook.get().toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #savePropertyBook(ReadOnlyPropertyBook)}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePropertyBook(propertyBook), filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/storage/JsonSerializableClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * An Immutable ClientBook that is serializable to JSON format.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"@JsonRootName(value \u003d \"clientbook\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonSerializableClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"Clients list contains duplicate client(s).\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonSerializableClientBook} with the given clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code ReadOnlyClientBook} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(ReadOnlyClientBook source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" clients.addAll(source.getClientList().stream().map(JsonAdaptedClient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Converts this client book into the model\u0027s {@code ClientBook} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public ClientBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" for (JsonAdaptedClient jsonAdaptedClient : clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" if (clientBook.hasClient(client)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/storage/JsonSerializablePropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * An Immutable PropertyBook that is serializable to JSON format.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"@JsonRootName(value \u003d \"propertybook\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerializablePropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"Properties list contains duplicate property(s).\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final List\u003cJsonAdaptedProperty\u003e properties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonSerializablePropertyBook} with the given properties.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(@JsonProperty(\"properties\") List\u003cJsonAdaptedProperty\u003e properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" this.properties.addAll(properties);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code ReadOnlyPropertyBook} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(ReadOnlyPropertyBook source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" properties.addAll(source.getPropertyList().stream().map(JsonAdaptedProperty::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Converts this property book into the model\u0027s {@code PropertyBook} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" for (JsonAdaptedProperty jsonAdaptedProperty : properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d jsonAdaptedProperty.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (propertyBook.hasProperty(property)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":59}},{"path":"src/main/java/seedu/address/storage/PropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Represents a storage for {@link seedu.address.model.PropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public interface PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Returns AddressBook data as a {@link ReadOnlyPropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * @see #getPropertyBookFilePath()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Saves the given {@link ReadOnlyPropertyBook} to the storage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * @param propertyBook cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" * @see #savePropertyBook(ReadOnlyPropertyBook)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":44}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage, PropertyBookStorage, ClientBookStorage {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":8,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private PropertyBookStorage propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private ClientBookStorage clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage, ClientBookStorage clientBookStorage) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookStorage \u003d propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" this.clientBookStorage \u003d clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":37,"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","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"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","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook 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-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" propertyBookStorage.savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook 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-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return clientBookStorage.readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" clientBookStorage.saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":29,"-":76}},{"path":"src/main/java/seedu/address/ui/ClientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"public class ClientCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"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-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public final Client client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" private Label phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private Label email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" private Label clientType;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public ClientCard(Client client, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" this.client \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" name.setText(client.getName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" clientType.setText(\"[\" + client.getTypeString() + \"]\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" phone.setText(client.getPhone().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" email.setText(client.getEmail().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return this.cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"apollo-tan":3}},{"path":"src/main/java/seedu/address/ui/ClientListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ClientListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private ListView\u003cClient\u003e clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientListPanel(ObservableList\u003cClient\u003e clientList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" clientListView.setItems(clientList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" clientListView.setCellFactory(listView -\u003e new ClientListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" class ClientListViewCell extends ListCell\u003cClient\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" protected void updateItem(Client client, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super.updateItem(client, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" if (empty || client \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" setGraphic(new ClientCard(client, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public ListView\u003cClient\u003e getClientListView() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return this.clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":53}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private ClientListPanel clientListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" private PropertyListPanel propertyListPanel;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" private StackPane listPanelPlaceholder;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" clientListPanel \u003d new ClientListPanel(logic.getFilteredClientList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"apollo-tan"},"content":" propertyListPanel \u003d new PropertyListPanel(logic.getFilteredPropertyList());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"apollo-tan"},"content":" // Initialise clientListPanel to display Clients","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"apollo-tan"},"content":" listPanelPlaceholder.getChildren().setAll(clientListPanel.getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"apollo-tan"},"content":" // Add listener to modify display appropriately","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"apollo-tan"},"content":" logic.getIsDisplayClientsProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"apollo-tan"},"content":" if (newValue) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"apollo-tan"},"content":" listPanelPlaceholder.getChildren().setAll(clientListPanel.getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"apollo-tan"},"content":" } else {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"apollo-tan"},"content":" listPanelPlaceholder.getChildren().setAll(propertyListPanel.getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"apollo-tan"},"content":" });","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" void handleExit() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6,"apollo-tan":17,"-":192}},{"path":"src/main/java/seedu/address/ui/PropertyCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":" * A UI component that displays information of a {@code Property}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"public class PropertyCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" private static final String FXML \u003d \"PropertyListCard.fxml\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" public final Property property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private HBox propertyCardPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" private Label id;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" private Label postalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" private Label typeLabel;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" private Label unit;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" * Creates a {@code PropertyCard} with the given {@code Property} and index to display.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" public PropertyCard(Property property, int displayedIndex) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" super(FXML);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" this.property \u003d property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" postalCode.setText(property.getPostalCode().value);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" unit.setText(property.getUnit().value);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" public HBox getPropertyCardPane() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" return this.propertyCardPane;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":43}},{"path":"src/main/java/seedu/address/ui/PropertyListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" * Panel containing the list of properties.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class PropertyListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private static final String FXML \u003d \"PropertyListPanel.fxml\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PropertyListPanel.class);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" @FXML","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" private ListView\u003cProperty\u003e propertyListView;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" * Creates a {@code PropertyListPanel} with the given list of properties.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" public PropertyListPanel(ObservableList\u003cProperty\u003e propertyList) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" super(FXML);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" propertyListView.setItems(propertyList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" propertyListView.setCellFactory(listView -\u003e new PropertyListViewCell());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Property} using a {@code PropertyCard}.","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" class PropertyListViewCell extends ListCell\u003cProperty\u003e {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" protected void updateItem(Property property, boolean empty) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" super.updateItem(property, empty);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" if (empty || property \u003d\u003d null) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" setText(null);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" } else {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" setGraphic(new PropertyCard(property, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" public ListView\u003cProperty\u003e getPropertyListView() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" return this.propertyListView;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":55}},{"path":"src/main/resources/view/ClientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"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-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" \u003c!-- Client Type Label (e.g. [buyer], [seller]) --\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"clientType\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$type\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" \u003c!-- Phone and Email Labels --\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"apollo-tan":3}},{"path":"src/main/resources/view/ClientListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" \u003cListView fx:id\u003d\"clientListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" \u003cStackPane fx:id\u003d\"listPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"apollo-tan":1,"-":59}},{"path":"src/main/resources/view/PropertyListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"propertyCardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"postalCode\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"typeLabel\" text\u003d\"[property]\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" \u003cLabel fx:id\u003d\"unit\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":33}},{"path":"src/main/resources/view/PropertyListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":" \u003cListView fx:id\u003d\"propertyListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-14","isFullCredit":false}],"authorContributionMap":{"apollo-tan":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" new JsonClientBookStorage(temporaryFolder.resolve(\"clientbook.json\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" // String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(prefPath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw e;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String addBuyerCommand \u003d AddBuyerCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedPerson \u003d new ClientBuilder(AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" expectedModel.addClient(expectedPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" assertCommandFailure(addBuyerCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"apollo-tan"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"apollo-tan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"apollo-tan"},"content":" public void getFilteredPropertiesList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"apollo-tan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPropertyList().remove(0));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_returnsBooleanPropertyType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d logic.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of BooleanProperty","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof BooleanProperty, \"Expected result to be an instance of BooleanProperty\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_isObservable() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d logic.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of Observable","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof Observable, \"Expected result to be an instance of Observable\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":13,"apollo-tan":42,"-":155}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class MessagesTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_singlePrefix_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_multiplePrefixes_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixEmail \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone, prefixEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"e/ p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" void formatBuyer_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Client buyer \u003d new Buyer(new Name(\"Alice Bee\"), new Phone(\"98765432\"), new Email(\"alice@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"BUYER; Alice Bee; Phone: 98765432; Email: alice@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" void formatSeller_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Client seller \u003d new Seller(new Name(\"Bob Bee\"), new Phone(\"87654321\"), new Email(\"bob@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"SELLER; Bob Bee; Phone: 87654321; Email: bob@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" void formatProperty_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(new PostalCode(\"123456\"), new Unit(\"12-75\"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" String result \u003d Messages.format(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d \"PostalCode: 123456; Unit: 12-75\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":67,"Virusrwj223":16}},{"path":"src/test/java/seedu/address/logic/commands/AddBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"class AddBuyerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Buyer buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" buyer \u003d mock(Buyer.class); // Mocking the Buyer object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullBuyer_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddBuyerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void execute_buyerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddBuyerCommand.MESSAGE_SUCCESS_BUYER, Messages.format(buyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addBuyerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(buyer); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateBuyer_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addBuyerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand, addBuyerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" void equals_sameBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(buyer); // Same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand1, addBuyerCommand2); // Different instances, same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void equals_differentBuyer_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Buyer differentBuyer \u003d mock(Buyer.class); // Different Buyer instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(differentBuyer); // Different buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand1, addBuyerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Client differentClient \u003d mock(Client.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand, differentClient); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":106}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"jolwnn"},"content":" public void deleteProperty(Property property) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"jolwnn"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"apollo-tan"},"content":" public ObservableList\u003cProperty\u003e getFilteredPropertyList() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"jolwnn"},"content":" public void updateFilteredPropertyList(Predicate\u003cProperty\u003e predicate) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"jolwnn"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"apollo-tan"},"content":" public BooleanProperty getIsDisplayClientsProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayClients() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"apollo-tan"},"content":" @Override","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"apollo-tan"},"content":" public void setDisplayProperties() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50,"jolwnn":10,"Virusrwj223":27,"apollo-tan":22,"-":206}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Property property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" private Model model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" @BeforeEach","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" void setUp() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" property \u003d mock(Property.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" model \u003d mock(Model.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPropertyCommand(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(false);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(AddPropertyCommand.MESSAGE_SUCCESS, Messages.format(property));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" CommandResult result \u003d addPropertyCommand.execute(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" verify(model).addProperty(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" void execute_duplicateProperty_throwsCommandException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate property","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(true);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(CommandException.class, () -\u003e addPropertyCommand.execute(model),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Property differentProperty \u003d mock(Property.class); // Different Seller instance","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(differentProperty);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, addPropertyCommand2);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":103}},{"path":"src/test/java/seedu/address/logic/commands/AddSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class AddSellerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Seller seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" seller \u003d mock(Seller.class); // Mocking the Seller object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSellerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddSellerCommand.MESSAGE_SUCCESS_SELLER, Messages.format(seller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addSellerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(seller); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateSeller_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addSellerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand, addSellerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(seller); // Same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand1, addSellerCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Seller differentSeller \u003d mock(Seller.class); // Different Seller instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(differentSeller); // Different seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand1, addSellerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":104}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public static final String VALID_PHONE_AMY \u003d \"91111111\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final String VALID_PHONE_BOB \u003d \"92222222\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_ADMIRALTY \u003d \"654321\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_BEDOK \u003d \"321456\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" public static final String VALID_NOTFOUND_POSTALCODE_CLEMENTI \u003d \"999999\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_ADMIRALTY \u003d \"02-22\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_BEDOK \u003d \"11-12\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" public static final String VALID_NOTFOUND_UNIT_CLEMENTI \u003d \"16-02\";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_ADMIRALTY \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_BEDOK \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_ADMIRALTY \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_BEDOK \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"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","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_POSTALCODE_DESC \u003d \" \" + PREFIX_POSTALCODE + \"1234\"; //PostalCode with few numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_UNIT_DESC \u003d \" \" + PREFIX_UNITNUMBER + \"11 11\"; //\u0027-\u0027 delimiter missing","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"jolwnn":2,"Virusrwj223":12,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/DeleteBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteBuyerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" public void execute_phoneNumberFound_assertCommandSuccess() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"94351253\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand deleteBuyerCommand \u003d new DeleteBuyerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteBuyerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" final DeleteBuyerCommand standardCommand \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand commandWithSameValues \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteBuyerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":47}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":7,"-":117}},{"path":"src/test/java/seedu/address/logic/commands/DeletePropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTFOUND_POSTALCODE_CLEMENTI;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTFOUND_UNIT_CLEMENTI;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" public void execute_validPostalCodeAndUnitNumber_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" Property propertyToDelete \u003d model.getFilteredPropertyList().stream()","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" .filter(property -\u003e property.getPostalCode().equals(postalCode)","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 property.getUnit().equals(unit))","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(String.format(\"Property not found. \",","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" VALID_POSTALCODE_ADMIRALTY, VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" new DeletePropertyCommand(propertyToDelete.getPostalCode(), propertyToDelete.getUnit());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(DeletePropertyCommand.MESSAGE_DELETE_PROPERTY_SUCCESS,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" Messages.format(propertyToDelete));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" ModelManager expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" assertCommandSuccess(deletePropertyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" public void execute_postalCodeNotFound_throwsCommandException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":" PostalCode notFoundPostalCode \u003d new PostalCode(VALID_NOTFOUND_POSTALCODE_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(notFoundPostalCode, unit);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" assertCommandFailure(deletePropertyCommand, model,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" String.format(\"Property not found. \", notFoundPostalCode, unit));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" public void execute_unitNumberNotFound_throwsCommandException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" Unit notFoundUnit \u003d new Unit(VALID_NOTFOUND_UNIT_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, notFoundUnit);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" assertCommandFailure(deletePropertyCommand, model,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":" String.format(\"Property not found. \", postalCode, notFoundUnit));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" public void execute_postalCodeAndUnitNumberNotFound_throwsCommandException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" PostalCode notFoundPostalCode \u003d new PostalCode(VALID_NOTFOUND_POSTALCODE_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":" Unit notFoundUnit \u003d new Unit(VALID_NOTFOUND_UNIT_CLEMENTI);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(notFoundPostalCode, notFoundUnit);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":" assertCommandFailure(deletePropertyCommand, model,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jolwnn"},"content":" String.format(\"Property not found. \", notFoundPostalCode, notFoundUnit));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jolwnn"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode1 \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode2 \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jolwnn"},"content":" Unit unit1 \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jolwnn"},"content":" Unit unit2 \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommand \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteSecondCommand \u003d new DeletePropertyCommand(postalCode2, unit2);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jolwnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jolwnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommandCopy \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jolwnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jolwnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jolwnn"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jolwnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, unit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jolwnn"},"content":" String expected \u003d DeletePropertyCommand.class.getCanonicalName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jolwnn"},"content":" + \"{postalCode\u003d\" + postalCode + \", unitNumber\u003d\" + unit + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jolwnn"},"content":" assertEquals(expected, deletePropertyCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":122}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteSellerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" public void execute() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand deleteSellerCommand \u003d new DeleteSellerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteSellerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" final DeleteSellerCommand standardCommand \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand commandWithSameValues \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteSellerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":50}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6,"Virusrwj223":8,"-":179}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/ListBuyersCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":"public class ListBuyersCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" public void listBuyersCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListBuyersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListBuyersCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListBuyersCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListBuyersCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteBuyers() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListBuyersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all buyers\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" public void keywordEqualsBuyers() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"buyers\", ListBuyersCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":50}},{"path":"src/test/java/seedu/address/logic/commands/ListClientsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListClientsCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" public void listClientsCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListClientsCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListClientsCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListClientsCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListClientsCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteClients() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListClientsCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all clients\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" public void keywordEqualsClients() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"clients\", ListClientsCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import java.lang.reflect.Modifier;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" public void listCommandIsAbstract() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" Class\u003cListCommand\u003e clazz \u003d ListCommand.class;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" // Check if the class is abstract","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Modifier.isAbstract(clazz.getModifiers()), \"ListCommand should be abstract\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" public void commandWordEqualsList() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"list\", ListCommand.COMMAND_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":4,"apollo-tan":9,"-":29}},{"path":"src/test/java/seedu/address/logic/commands/ListPropertiesCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListPropertiesCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" public void listPropertiesCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListPropertiesCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListPropertiesCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListPropertiesCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListPropertiesCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteProperties() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListPropertiesCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all properties\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" public void keywordPropertiesBuyers() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"properties\", ListPropertiesCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":49}},{"path":"src/test/java/seedu/address/logic/commands/ListSellersCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":"public class ListSellersCommandTest {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" private Model model;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" @BeforeEach","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" public void setUp() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" public void listSellersCommandGeneration() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListSellersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListSellersCommand","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListSellersCommand,","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" \"Command should be an instance of ListSellersCommand\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteSellers() throws CommandException {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListSellersCommand();","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all sellers\");","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" public void keywordEqualsSellers() {","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" assertEquals(\"sellers\", ListSellersCommand.KEY_WORD);","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-16","isFullCredit":false}],"authorContributionMap":{"apollo-tan":49}},{"path":"src/test/java/seedu/address/logic/parser/AddBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddBuyerCommandParser parser \u003d new AddBuyerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedBuyer \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddBuyerCommand(expectedBuyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":91}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTALCODE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParserTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private AddPropertyCommandParser parser \u003d new AddPropertyCommandParser();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" Property expectedProperty \u003d new PropertyBuilder().withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertParseSuccess(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" new AddPropertyCommand(expectedProperty));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // missing PostalCode prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, UNIT_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // missing unit prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // invalid postal code","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, INVALID_POSTALCODE_DESC + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" // invalid unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + INVALID_UNIT_DESC,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessagePostalCode \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessageUnit \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" expectedMessagePostalCode);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" expectedMessageUnit);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":74}},{"path":"src/test/java/seedu/address/logic/parser/AddSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddSellerCommandParser parser \u003d new AddSellerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Seller expectedSeller \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddSellerCommand(expectedSeller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":90}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addBuyer() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer alice \u003d new ClientBuilder(ALICE).withEmail(ALICE.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" .withPhone(ALICE.getPhone().toString()).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand command \u003d (AddBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + ALICE.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + ALICE.getPhone() + \" \" + PREFIX_EMAIL + ALICE.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddBuyerCommand(alice), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addSeller() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" Seller daniel \u003d new ClientBuilder(DANIEL).withEmail(DANIEL.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" .withPhone(DANIEL.getPhone().toString()).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand command \u003d (AddSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + DANIEL.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + DANIEL.getPhone() + \" \" + PREFIX_EMAIL + DANIEL.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddSellerCommand(daniel), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteBuyer() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" final String phoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand command \u003d (DeleteBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteBuyerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteSeller() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" final String phoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand command \u003d (DeleteSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteSellerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" public void parseCommand_addProperty() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand command \u003d (AddPropertyCommand) parser.parseCommand(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.COMMAND_WORD + \" \" + PREFIX_POSTALCODE + ADMIRALTY.getPostalCode() + \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + ADMIRALTY.getUnit()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" );","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(new AddPropertyCommand(property), command);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" public void parseCommand_deleteProperty() throws Exception {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand command \u003d (DeletePropertyCommand) parser.parseCommand(","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.COMMAND_WORD + \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_ADMIRALTY","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" + \" \" + PREFIX_UNITNUMBER + VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" assertEquals(new DeletePropertyCommand(postalCode, unitNumber), command);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/buyers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/sellers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/properties\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/clients\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"jolwnn":16,"yongkheehou":35,"Virusrwj223":17,"apollo-tan":6,"thony-ui":17,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" private DeleteBuyerCommandParser parser \u003d new DeleteBuyerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" private final String nonEmptyphoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteBuyerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteBuyerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"thony-ui":37}},{"path":"src/test/java/seedu/address/logic/parser/DeletePropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTALCODE_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" private DeletePropertyCommandParser parser \u003d new DeletePropertyCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d INVALID_POSTALCODE_DESC + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeAndUnit_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d INVALID_POSTALCODE_DESC + \" \" + INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidUnitNumberFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY + \" \" + INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" public void parse_missingPostalCode_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":" public void parse_missingUnitNumber_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jolwnn"},"content":" public void parse_missingPostalCodePrefix_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d VALID_POSTALCODE_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jolwnn"},"content":" public void parse_missingUnitNumberPrefix_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d POSTALCODE_DESC_ADMIRALTY + \" \" + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jolwnn"},"content":" public void parse_extraSpaces_success() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + POSTALCODE_DESC_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY + \" \";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jolwnn"},"content":" public void parse_onlySpaces_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \";","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jolwnn"},"content":" public void parse_upperCasePrefixes_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \"C/\" + VALID_POSTALCODE_ADMIRALTY + \" U/\" + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jolwnn"},"content":" public void parse_preamblePresent_failure() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \"randomPreambleText \" + POSTALCODE_DESC_ADMIRALTY + \" \" + UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":128}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private DeleteSellerCommandParser parser \u003d new DeleteSellerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" private final String nonEmptyphoneNumber \u003d \"92345678\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteSellerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteSellerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"thony-ui":37}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"123 45\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d \"11-11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Test for parsing index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" // Tests for Tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"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","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientName(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientName(INVALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithoutWhitespace_returnsClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(VALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithWhitespace_returnsTrimmedClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"yongkheehou"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(nameWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientPhone(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientPhone(INVALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithoutWhitespace_returnsClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(VALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithWhitespace_returnsTrimmedClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"yongkheehou"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(phoneWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientEmail((String) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientEmail(INVALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(VALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"yongkheehou"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(emailWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property PostalCode","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePostalCode((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePostalCode(INVALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(VALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Virusrwj223"},"content":" String postalCodeWithWhitespace \u003d WHITESPACE + VALID_POSTALCODE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(postalCodeWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property Unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseUnit((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseUnit(INVALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(VALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Virusrwj223"},"content":" String unitWithWhitespace \u003d WHITESPACE + VALID_UNIT + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(unitWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"yongkheehou":79,"Virusrwj223":54,"-":191}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_BUYERS_ONLY;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_SELLERS_ONLY;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.CARL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":"import javafx.beans.property.BooleanProperty;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBookBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new ClientBook(), new ClientBook(modelManager.getClientBook()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"new/client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClientBookFilePath(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_validPath_setsClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Path path \u003d Paths.get(\"data/clientbook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" modelManager.setClientBookFilePath(path);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(path, modelManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientNotInClientBook_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" assertFalse(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientInClientBook_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" modelManager.addClient(CARL);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" assertTrue(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" public void setPropertyBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPropertyBookFilePath(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jolwnn"},"content":" public void setPropertyBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jolwnn"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"jolwnn"},"content":" modelManager.setPropertyBookFilePath(path);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"jolwnn"},"content":" assertEquals(path, modelManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jolwnn"},"content":" public void hasProperty_propertyInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jolwnn"},"content":" modelManager.addProperty(BEDOK);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jolwnn"},"content":" assertTrue(modelManager.hasProperty(BEDOK));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jolwnn"},"content":" public void getFilteredPropertyList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"jolwnn"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPropertyList().remove(0));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"apollo-tan"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Equality Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBookBuilder().withClient(CARL).withClient(DANIEL).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" ClientBook differentClientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"Virusrwj223"},"content":" differentClientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new PropertyBook(), clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":" clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_returnsBooleanPropertyType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d modelManager.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of BooleanProperty","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof BooleanProperty, \"Expected result to be an instance of BooleanProperty\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"apollo-tan"},"content":" public void getIsDisplayClientsProperty_isObservable() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"apollo-tan"},"content":" // Call the method","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"apollo-tan"},"content":" BooleanProperty result \u003d modelManager.getIsDisplayClientsProperty();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"apollo-tan"},"content":" // Assert that the result is an instance of Observable","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"apollo-tan"},"content":" assertTrue(result instanceof Observable, \"Expected result to be an instance of Observable\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"apollo-tan"},"content":" public void testBuyerPredicate() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"apollo-tan"},"content":" Name nameBuyer \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"apollo-tan"},"content":" Phone phoneBuyer \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"apollo-tan"},"content":" Email emailBuyer \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"apollo-tan"},"content":" Client mockBuyer \u003d new Buyer(nameBuyer, phoneBuyer, emailBuyer);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"apollo-tan"},"content":" Name nameSeller \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"apollo-tan"},"content":" Phone phoneSeller \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"apollo-tan"},"content":" Email emailSeller \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"apollo-tan"},"content":" Client mockSeller \u003d new Seller(nameSeller, phoneSeller, emailSeller);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"apollo-tan"},"content":" assertTrue(PREDICATE_SHOW_ALL_BUYERS_ONLY.test(mockBuyer), \"Buyer should pass the buyer predicate\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"apollo-tan"},"content":" // Predicate should return false for (when client is a buyer)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"apollo-tan"},"content":" assertFalse(","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"apollo-tan"},"content":" PREDICATE_SHOW_ALL_BUYERS_ONLY.test(mockSeller),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"apollo-tan"},"content":" \"Seller should not pass the buyer predicate\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"apollo-tan"},"content":" );","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"apollo-tan"},"content":" public void testSellerPredicate() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"apollo-tan"},"content":" // Mocking the buyer and seller details","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"apollo-tan"},"content":" Name nameBuyer \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"apollo-tan"},"content":" Phone phoneBuyer \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"apollo-tan"},"content":" Email emailBuyer \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"apollo-tan"},"content":" Client mockBuyer \u003d new Buyer(nameBuyer, phoneBuyer, emailBuyer);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"apollo-tan"},"content":" Name nameSeller \u003d mock(Name.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"apollo-tan"},"content":" Phone phoneSeller \u003d mock(Phone.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"apollo-tan"},"content":" Email emailSeller \u003d mock(Email.class);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"apollo-tan"},"content":" Client mockSeller \u003d new Seller(nameSeller, phoneSeller, emailSeller);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"apollo-tan"},"content":" // Predicate should return true for sellers","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"apollo-tan"},"content":" assertTrue(PREDICATE_SHOW_ALL_SELLERS_ONLY.test(mockSeller), \"Seller should pass the seller predicate\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"apollo-tan"},"content":" // Predicate should return false for buyers (when client is a buyer)","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"apollo-tan"},"content":" assertFalse(","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"apollo-tan"},"content":" PREDICATE_SHOW_ALL_SELLERS_ONLY.test(mockBuyer),","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"apollo-tan"},"content":" \"Buyer should not pass the seller predicate\"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"apollo-tan"},"content":" );","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46,"jolwnn":23,"Virusrwj223":10,"apollo-tan":77,"-":127}},{"path":"src/test/java/seedu/address/model/client/BuyerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class BuyerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer, buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"John Doe\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"12345678\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"john@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Buyer\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dBUYER, name\u003dJohn Doe, phone\u003d12345678, email\u003djohn@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, buyer.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"apollo-tan"},"content":" void testGetTypeString_returnsCorrectType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"apollo-tan"},"content":" // Arrange","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":" Buyer buyer \u003d new Buyer(mock(Name.class), mock(Phone.class), mock(Email.class));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":" // Act","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" String typeString \u003d buyer.getTypeString();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"apollo-tan"},"content":" // Assert","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"apollo-tan"},"content":" assertEquals(ClientTypes.BUYER.getType(), typeString);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154,"apollo-tan":12}},{"path":"src/test/java/seedu/address/model/client/ClientTypesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class ClientTypesTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void getType_buyer_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"buyer\", ClientTypes.BUYER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void getType_seller_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"seller\", ClientTypes.SELLER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validBuyer_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"BUYER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validSeller_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"SELLER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_invalidType_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"INVALID\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseBuyer_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"buyer\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseSeller_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"seller\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_nullValue_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_emptyString_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":55}},{"path":"src/test/java/seedu/address/model/client/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class EmailTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidEmail() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // blank email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // missing parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" // invalid parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // valid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":88}},{"path":"src/test/java/seedu/address/model/client/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class NameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class PhoneTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidPhone() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null phone number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // valid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"83121534\"));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d new Phone(\"99928495\");","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(new Phone(\"99928495\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(new Phone(\"99924444\")));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":59}},{"path":"src/test/java/seedu/address/model/client/SellerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class SellerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller, seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"Jane Smith\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"87654321\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"jane@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Seller\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dSELLER, name\u003dJane Smith, phone\u003d87654321, email\u003djane@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, seller.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"apollo-tan"},"content":" void testGetTypeString_returnsCorrectType() {","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"apollo-tan"},"content":" // Arrange","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":" Seller seller \u003d new Seller(mock(Name.class), mock(Phone.class), mock(Email.class));","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":" // Act","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" String typeString \u003d seller.getTypeString();","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"apollo-tan"},"content":" // Assert","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"apollo-tan"},"content":" assertEquals(ClientTypes.SELLER.getType(), typeString);","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154,"apollo-tan":12}},{"path":"src/test/java/seedu/address/model/client/UniqueClientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientListTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList uniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void contains_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.contains(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public void add_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.add(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void add_duplicateClient_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.add(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullTargetClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(null, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullEditedClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(ALICE, null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void setClient_targetClientNotInList_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.setClient(ALICE, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientIsSameClient_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasSameIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasNonUniqueIdentity_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClient(ALICE, BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public void remove_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.remove(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" public void remove_personDoesNotExist_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.remove(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" public void remove_existingClient_removesClient() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.remove(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullUniqueClientList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((UniqueClientList) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void setClients_uniqueClientList_replacesOwnListWithProvidedUniqueClientList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(expectedUniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((List\u003cClient\u003e) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" public void setClients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(personList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" public void setClients_listWithDuplicateClients_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e listWithDuplicateClients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClients(listWithDuplicateClients));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" -\u003e uniqueClientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" assertEquals(uniqueClientList.asUnmodifiableObservableList().toString(), uniqueClientList.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":175}},{"path":"src/test/java/seedu/address/model/client/exceptions/ClientNotFoundExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" public void clientNotFoundException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Test that the ClientNotFoundException can be thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":16}},{"path":"src/test/java/seedu/address/model/client/exceptions/DuplicateClientExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" // Test that DuplicateClientException is thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_hasCorrectMessage() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" // Test that the message in DuplicateClientException is as expected","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Exception exception \u003d assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"Operation would result in duplicate persons\", exception.getMessage());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":26}},{"path":"src/test/java/seedu/address/model/property/PostalCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCodeTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new PostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PostalCode(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidPostalCode() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e PostalCode.isValidPostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-00000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00\u0026000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00.000\")); // contains decimal characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00000\")); // contains less than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"0000000\")); // contains more than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-000001\")); // negative number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"000000\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"123456\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"999999\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(new PostalCode(VALID_POSTALCODE_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(postalCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(new PostalCode(VALID_POSTALCODE_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/model/property/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void isSameProperty() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.isSameProperty(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" Property admiraltyCopy \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(admiraltyCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(5));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d Property.class.getCanonicalName() + \"{postalCode\u003d\" + ADMIRALTY.getPostalCode()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" + \", unit\u003d\" + ADMIRALTY.getUnit() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, ADMIRALTY.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":72}},{"path":"src/test/java/seedu/address/model/property/UniquePropertiesListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesListTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList uniquePropertyList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.contains(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyNotInList_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyInList_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" Property editedAlice \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" public void add_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.add(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullTargetProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(null, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullEditedProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_targetPropertyNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyIsSameProperty_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" .build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasNonUniqueIdentity_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jolwnn"},"content":" public void remove_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jolwnn"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.remove(null));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jolwnn"},"content":" public void remove_propertyDoesNotExist_throwsPropertyNotFoundException() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jolwnn"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.remove(BEDOK));","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jolwnn"},"content":" public void remove_existingProperty_removesProperty() {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jolwnn"},"content":" uniquePropertyList.remove(ADMIRALTY);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jolwnn"},"content":" UniquePropertiesList expectedUniquePersonList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jolwnn"},"content":" assertEquals(expectedUniquePersonList, uniquePropertyList);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullUniquePropertyList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((UniquePropertiesList) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_uniquePropertyList_replacesOwnListWithProvidedUniquePropertyList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(expectedUniquePropertiesList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((List\u003cProperty\u003e) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e propertyList \u003d Collections.singletonList(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(propertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_listWithDuplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e listWithDuplicateProperties \u003d Arrays.asList(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" .setProperties(listWithDuplicateProperties));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" public void add_duplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.add(ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Virusrwj223"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" -\u003e uniquePropertyList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jolwnn":18,"Virusrwj223":157}},{"path":"src/test/java/seedu/address/model/property/UnitTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class UnitTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new Unit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Unit(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidUnit() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e Unit.isValidUnit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"-00-00\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00 00\")); // wrong delimiter","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00\u002600\")); // wrong character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-00\")); // few digits in level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00-0\")); // few digits in unit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-0\")); // few digits in unit and level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-1111\")); // Too tall structure","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"148-111111\")); // Too many units, limited to 6","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-11111119\")); // Too tall structure and too many units","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"00-00\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"01-01\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"148-11111\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(new Unit(VALID_UNIT_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(unit));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(new Unit(VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":67}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedClientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.storage.JsonAdaptedClient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonAdaptedClientTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_TYPE \u003d \"invalidType\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_NAME \u003d ALICE.getName().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d ALICE.getPhone().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_EMAIL \u003d ALICE.getEmail().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_TYPE \u003d ALICE instanceof Buyer ? \"BUYER\" : \"SELLER\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_validClientDetails_returnsClient() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertEquals(ALICE, client.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedPropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"12345\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"00 00\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d ADMIRALTY.getPostalCode().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d ADMIRALTY.getUnit().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_validPropertyDetails_returnsProperty() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(ADMIRALTY, property.toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPostalCode_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(INVALID_POSTALCODE, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, INVALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(null, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PostalCode.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/storage/JsonPropertyBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorageTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonPropertyBookStorageTest\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" @TempDir","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public Path testFolder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void readPropertyBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e readPropertyBook(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private java.util.Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(String filePath) throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new JsonPropertyBookStorage(Paths.get(filePath)).readPropertyBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" : null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(readPropertyBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPropertyBook(\"notJsonFormatPropertyBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Saves {@code propertyBook} at the specified {@code filePath}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" private void savePropertyBook(ReadOnlyPropertyBook addressBook, String filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" .savePropertyBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e savePropertyBook(new PropertyBook(), null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/storage/JsonSerializableClientBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.TypicalClients;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonSerializableClientBookTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClientBookTest\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final Path TYPICAL_CLIENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final Path INVALID_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private static final Path DUPLICATE_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_typicalClientsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CLIENTS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" ClientBook typicalClientsClientBook \u003d TypicalClients.getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(clientBookFromFile, typicalClientsClientBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidClientFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_duplicateClients_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClientBook.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46}},{"path":"src/test/java/seedu/address/storage/JsonSerialzablePropertyBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.TypicalProperty;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerialzablePropertyBookTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" \"JsonSerializablePropertyBookTest\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TYPICAL_PROPERTIES_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"typicalPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" private static final Path INVALID_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"invalidPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private static final Path DUPLICATE_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"duplicatePropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_typicalPropertiesFile_success() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PROPERTIES_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook typicalPersonsAddressBook \u003d TypicalProperty.getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(propertyBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, JsonSerializablePropertyBook.MESSAGE_DUPLICATE_PROPERTY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":49}},{"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","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(getTempFilePath(\"cb\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorage} class. More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorage} class. More extensive testing of AddressBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" public void clientBookReadSave() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" ClientBook original \u003d getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" storageManager.saveClientBook(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook retrieved \u003d storageManager.readClientBook().get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertEquals(original, new ClientBook(retrieved));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" public void getClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" assertNotNull(storageManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" public void propertyBookReadSave() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook original \u003d getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" storageManager.savePropertyBook(original);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook retrieved \u003d storageManager.readPropertyBook().get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(original, new PropertyBook(retrieved));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" public void getPropertyBookFilePath() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" assertNotNull(storageManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":27,"-":61}},{"path":"src/test/java/seedu/address/testutil/ClientBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Clientbook objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" * {@code ClientBook cb \u003d new ClientBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"public class ClientBookBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" private ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder(ClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder withClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Name name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Phone phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Email email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Initializes the ClientBuilder with the data of {@code ClientToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder(Client personToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d new seedu.address.model.client.Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d new seedu.address.model.client.Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d new seedu.address.model.client.Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" public Buyer buildBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return new Buyer(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public Seller buildSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Seller(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_UNIT \u003d \"08-20\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private Unit unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d new Unit(DEFAULT_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTALCODE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" SampleDataUtil.getSamplePropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Initializes the PropertyBuilder with the data of {@code propertyToCopy}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder(Property propertyToCopy) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d propertyToCopy.getUnit();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d propertyToCopy.getPostalCode();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code Unit} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withUnit(String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public Property build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" return new Property(postalCode, unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/testutil/TypicalClients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A utility class containing a list of {@code Client} objects to be used in tests.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class TypicalClients {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"heinz@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"cornelia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final Client ELLE \u003d new ClientBuilder().withName(\"Elle Meyer\").withPhone(\"94822242\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"werner@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final Client FIONA \u003d new ClientBuilder().withName(\"Fiona Kunz\").withPhone(\"94824272\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"lydia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public static final Client GEORGE \u003d new ClientBuilder().withName(\"George Best\").withPhone(\"94824422\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"anna@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Manually added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"84824242\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"stefan@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public static final Client IDA \u003d new ClientBuilder().withName(\"Ida Mueller\").withPhone(\"84821312\")","lastModifiedDate":"2024-10-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"hans@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public static final Client BOB \u003d new ClientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" private TypicalClients() {} // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns an {@code ClientBook} with all the typical buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public static ClientBook getTypicalClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" ClientBook cb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" cb.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return cb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":68}},{"path":"src/test/java/seedu/address/testutil/TypicalProperty.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * A utility class containing a list of {@code Property} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class TypicalProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public static final Property ADMIRALTY \u003d new PropertyBuilder().withUnit(\"02-22\").withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final Property BEDOK \u003d new PropertyBuilder().withUnit(\"11-12\").withPostalCode(\"321456\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static PropertyBook getTypicalPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook ab \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" for (Property property : getTypicalProperties()) {","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" ab.addProperty(property);","lastModifiedDate":"2024-10-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public static List\u003cProperty\u003e getTypicalProperties() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"Virusrwj223":31}}] diff --git a/AY2425S1-CS2103T-T16-2_tp_master/commits.json b/AY2425S1-CS2103T-T16-2_tp_master/commits.json index 01860124..e5f6f6f5 100644 --- a/AY2425S1-CS2103T-T16-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T16-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yongkheehou":[{"date":"2024-09-30","commitResults":[{"hash":"0e52d0348a593a5103e1c40b4b709741a5d0b042","isMergeCommit":false,"messageTitle":"Update AboutUs page with Khee Hou information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1eb3010b28dafd7f26bcae690d0f5596c49f9d48","isMergeCommit":false,"messageTitle":"Update DG for addbuyer and addseller use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":28}}},{"hash":"fc03bd1e1d4d4ba2aee242aab1890374e8eb8036","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yongkheehou/chore/update-dg-add-clients","messageBody":"Update DG for addbuyer and addseller use case","fileTypesAndContributionMap":{}},{"hash":"499c10eec65ca9c92037d3c689697916915ca94f","isMergeCommit":false,"messageTitle":"Update product page names to ClientGrid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"bd6a142ec88aa3ba297784ea8108ba16411473f1","isMergeCommit":true,"messageTitle":"Merge pull request #37 from yongkheehou/chore/fix-product-page-names","messageBody":"Update product page names to ClientGrid","fileTypesAndContributionMap":{}},{"hash":"ba7c04d141ed4d13db2419279d9890c1cd7d92e8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from thony-ui/add-precommit-hook","messageBody":"Add pre commit to checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8a06e335cd651d883f05a6d4a3e0ff15503c5e65","isMergeCommit":true,"messageTitle":"Merge pull request #18 from yongkheehou/chore/update-aboutus-kheehou","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"bfcba46eba249d9fce72c86e0bb467537d1a55c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Anthony/AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba671239a3de2b947e2fbfcfa8bc0a5337ebcb60","isMergeCommit":true,"messageTitle":"Merge pull request #10 from thony-ui/Anthony/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"e4606d0ca8df983a472135d91cbee63d9503f9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e688bb047e2c6f65a55c91a65a9a1236e148831","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jolwnn/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"69e0e43e1931cb90e4dab8e8d1800697b509e355","isMergeCommit":false,"messageTitle":"Fix UG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"28558f9ea0e55cb544dc05e8e65dbdff7ac41e67","isMergeCommit":false,"messageTitle":"Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"e49c63c0e50f07e793ee70a2c48821053a7d549e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yongkheehou/fix-dg-formatting","messageBody":"Fix DG formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"d64aec6a759c9f38290086c884185cfb466ef958","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Virusrwj223/CreateProperty","messageBody":"Define Property Model","fileTypesAndContributionMap":{}},{"hash":"efec37dce1dddf858ff66395dad78232c52fb3ef","isMergeCommit":false,"messageTitle":"Add model and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":823,"deletions":5},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f07b41d9b8fe8a5eca365ed0cc5155bb20c4f055","isMergeCommit":false,"messageTitle":"Add changes to MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":396,"deletions":23},"test-code":{"insertions":215,"deletions":33}}}]},{"date":"2024-10-10","commitResults":[{"hash":"a55e0e76f0661da33fe97ce84e649041742e585e","isMergeCommit":false,"messageTitle":"Improve test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":620,"deletions":10}}},{"hash":"558d9f6486970ade7778dc790c8c424a59cea632","isMergeCommit":false,"messageTitle":"Fix Checkstyle for ClientBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3c0f0f99bb580d14d264814cf513762be41f00fa","isMergeCommit":false,"messageTitle":"Update ModelManager and StorageManager tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":6}}},{"hash":"b80abc1a0a1ad5f30731ff0b49a91383ffc91c52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into define-buyer-seller-models","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a7f3abac0f8023cea26e9cc0978537b7b6b88c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yongkheehou/define-buyer-seller-models","messageBody":"Define Buyer/ Seller Models","fileTypesAndContributionMap":{}},{"hash":"292f8a9d3f41733bb0b060f463c5f26b92525e91","isMergeCommit":false,"messageTitle":"Fix v1.2 test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d5b3b73fa37f67a50241c460f2ce21c0887cc29d","isMergeCommit":false,"messageTitle":"Make Client an abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":56},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e51916789751d009f4d1512e7766dc2ac6a171b4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":308,"deletions":0}}},{"hash":"4119a4f87152b74f28b0dd2de74c7fbeb3a347be","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yongkheehou/fix-make-client-abstract-class","messageBody":"Make Client an abstract class","fileTypesAndContributionMap":{}},{"hash":"a169bc4f08c10047db239e337b9f5e170579e346","isMergeCommit":false,"messageTitle":"Add logic classes for addbuyer and addseller cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":5},"test-code":{"insertions":582,"deletions":18}}},{"hash":"dfa410a01f38efc4a4ba1a5e025a8f35d0a8e044","isMergeCommit":true,"messageTitle":"Merge pull request #73 from yongkheehou/add-logic-classes-for-addbuyer-seller-commands","messageBody":"Add logic classes for addbuyer and addseller cmds","fileTypesAndContributionMap":{}},{"hash":"1c5effac008f777302c7b67892b8380ed5e07b33","isMergeCommit":false,"messageTitle":"Add UI classes for addbuyer/ addseller","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":5},"other":{"insertions":19,"deletions":1},"test-code":{"insertions":179,"deletions":0}}},{"hash":"a7ae718a10758fd85ca599ec0e3f259e4eb69f7d","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bfd7f8f67988b1d538af631379e4f23baaebd6b7","isMergeCommit":false,"messageTitle":"Fix junit syntax","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":7,"deletions":6}}},{"hash":"4dfe9e0c2d7ff59b8960006558fd54d96c4583c2","isMergeCommit":false,"messageTitle":"Remove GUI testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":21},"test-code":{"insertions":0,"deletions":179}}},{"hash":"ab68dd3ca74c0ad993683161c5bbd37de61e664a","isMergeCommit":false,"messageTitle":"Wrap client book with constructor in edit cmd test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"f190b2a61cd71efd8a52832a5e302989f7584a45","isMergeCommit":true,"messageTitle":"Merge pull request #79 from yongkheehou/small-fix-to-tests","messageBody":"Wrap client book with constructor in edit cmd test","fileTypesAndContributionMap":{}},{"hash":"66015818877c983f0159d440e1bf1c0e9b11b998","isMergeCommit":false,"messageTitle":"Small Fix to SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"14f31c38302e18d6eaa2a5f54e5d520245102c70","isMergeCommit":true,"messageTitle":"Merge pull request #78 from yongkheehou/add-ui-classes-for-addbuyer-seller-commands-2","messageBody":"Add UI classes for addbuyer/ addseller [2]","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"eba663a4094a5a1adea7ef6c936554443fb6dd5a","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"docs":{"insertions":42,"deletions":5},"test-code":{"insertions":16,"deletions":17}}},{"hash":"0e3d266f99fc5de275aa5de183768b4b351ca6be","isMergeCommit":true,"messageTitle":"Merge pull request #89 from yongkheehou/update-user-guide-for-addbuyer-addseller","messageBody":"Update User Guide For Add Buyer/ Seller Commands","fileTypesAndContributionMap":{}}]}],"jolwnn":[{"date":"2024-10-02","commitResults":[{"hash":"8e32b16db2747babd32fef18a7fe2f820303c930","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-03","commitResults":[{"hash":"edf80036815c47c6ce43498eddd880f6f6a242a2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jolwnn/add-zhuolin-photo","messageBody":"Add Zhuo Lin\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"3ada6bd82bbfd4edab0e764179da7b8fb4c3a7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T16-2:master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"335104a6889daa839bf49a93075d3939f6a8de99","isMergeCommit":false,"messageTitle":"Update developer guide with delete property use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"9d0c4f2212b34db370eeff3fe3117738434db9d8","isMergeCommit":false,"messageTitle":"Update with minor changes to use case 1, 2, 4","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":14}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b05d6ee1ffc5a7f342a2a5dc534abea0516561c0","isMergeCommit":false,"messageTitle":"Add command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":1}}},{"hash":"7618561f6d5e98f77c455cc7b82ec77d3922c3e3","isMergeCommit":false,"messageTitle":"Add tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":0}}},{"hash":"85ef40c8179e3e8750f178903399209679a6a076","isMergeCommit":false,"messageTitle":"Fix failing tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"38d350ca1e3aee9f2563c30473c5e50c962b206e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"4dab0353f166add8365abc47895db7fc8f017e83","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jolwnn/delete-property-setup","messageBody":"Initial Set Up for Delete Properties Command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"39ce983127f95ee3317179c28e18953ddc13f891","isMergeCommit":false,"messageTitle":"Add functionality for delete property command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":4}}},{"hash":"3f7cafe0bf11a5b7407481267894439469543093","isMergeCommit":false,"messageTitle":"Add tests for delete property command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":78,"deletions":19}}},{"hash":"02c1f07624e92c2b1a574e2faa586185e932059e","isMergeCommit":false,"messageTitle":"Add tests for delete property command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":92,"deletions":10}}},{"hash":"a0c2543ac7fe2e7f47aba5abeaca9c7e2884da92","isMergeCommit":false,"messageTitle":"Fix failing test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":6,"deletions":4}}},{"hash":"dffc577a34bfc629401d8a8b6eb0d9e233822701","isMergeCommit":false,"messageTitle":"Add tests for modelmanager and addressbookparser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":58,"deletions":19}}},{"hash":"793724e20b7a540504d1f11b609306bfdd87ebe3","isMergeCommit":true,"messageTitle":"Merge pull request #85 from jolwnn/delete-property-command","messageBody":"Delete property command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"a83d97f2b47f5907fae61945f77370c7626de20c","isMergeCommit":false,"messageTitle":"Update user guide with delete property command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":18}}},{"hash":"96c1906d1e07f825f28d621207f4f80c8c0a1658","isMergeCommit":true,"messageTitle":"Merge pull request #100 from jolwnn/update-ug","messageBody":"Update user guide with delete property command","fileTypesAndContributionMap":{}}]}],"Virusrwj223":[{"date":"2024-09-30","commitResults":[{"hash":"15c5054da033ec4b30c591bca1582257e31cffe9","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"fb880b1a2a9bd07e0e7f6093be18eb54deabd563","isMergeCommit":true,"messageTitle":"Merge branch \u0027photograph\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e266eba435f662e0be96b179d8a19e3eba2dc16","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba8e0a9374b1e68d9fec4dc3f5ca1c68bcda7e28","isMergeCommit":false,"messageTitle":"Add responsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fcb30f80a1a30ceaed9ae33161e459c79afde775","isMergeCommit":false,"messageTitle":"Update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":9}}},{"hash":"6f465aedb64f1c1fc60dcb293d852147ac99cc00","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Virusrwj223/ProjectReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"65d5defc91b8f34d1e8b89c00ffd5ef38209399c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"249a39fa70e561294d6f12523d634b8ec4281efc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"152ae5d38f0ce0cb675301753871c368d62b34ac","isMergeCommit":false,"messageTitle":"Update Develop Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":24}}}]},{"date":"2024-10-03","commitResults":[{"hash":"d4bd635251a099986b322f57bc936741c1cc15c6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"aa273dd815e038b21c668a2e3d9de96622f36ce7","isMergeCommit":true,"messageTitle":"Resolve merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a973bf40dce6f32ed4f123622f606872dafc9982","isMergeCommit":false,"messageTitle":"Add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8d5689958b6306914e03099b26b2c4c99fe97474","isMergeCommit":false,"messageTitle":"Shift add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"069b6afea39c2d6a5093f9ab16e7fa782c76655a","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b967ec0b965e048925fa9cf23e8f4d07c8d248f9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from Virusrwj223/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"2ab42a6e26c8b09858096f0747acf2df2e6f4bc0","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"2d6f1d226fe2cd0a8a6cf12dbfd2a7b2767aa6e8","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"8d57045838cd65c4a253b1c96f8cf77105003739","isMergeCommit":false,"messageTitle":"Define property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":0}}},{"hash":"729e94bf6e2cbd0c0093a627bca61909b83051dc","isMergeCommit":false,"messageTitle":"Add javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":10}}},{"hash":"e6639b8a5e85c9387f1cf421a926ad8673b83fdc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"f70b96d15bf844a03ada998de3d15f069e3cbcf3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":328,"deletions":0}}},{"hash":"c031141cd38a82f106128fc6721ca200c65908fe","isMergeCommit":false,"messageTitle":"Complete model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":26},"test-code":{"insertions":102,"deletions":22}}},{"hash":"ef7952fcba29f8de19fdb0d9fcad0eee71722456","isMergeCommit":false,"messageTitle":"Set up storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":14},"test-code":{"insertions":116,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"737803887c5d511974cbf2bf1ea854f2a96960d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b36057e8831c8220c1431396d909be09891a8bde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into CreateProperty","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b54b703152bf4ef017050c0d3291128ff6c8597c","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"3ed3c99c810f84810f5f7eb10d5a907f5722f875","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"590ef347aeeaa24eade4294bedc53f35c33f9699","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Virusrwj223/CreateProperty","messageBody":"Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"3ecd2ef473099b08ce2fba21c975b22440ad8dd1","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"f5ae6bcc5fe3ebda5752459defcb2763110cf9f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"402a6b5a9c96df32769ec99fdbfa3e64e5f6437d","isMergeCommit":false,"messageTitle":"Update merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":28},"test-code":{"insertions":162,"deletions":30}}},{"hash":"e8a9880a551ff58490968a34f7cb5d2010f37014","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"881c83c1db0055d73f15a272d8520ded28b3cec9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98783862ad67b577550ef762ef31a36648f35c1a","isMergeCommit":false,"messageTitle":"Update test signature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":2,"deletions":4}}},{"hash":"dae6252e053041809a8dae6076cbed1b4e481855","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Virusrwj223/Model","messageBody":"Model","fileTypesAndContributionMap":{}},{"hash":"3cc103723c74214def7872a7701635bfc07b7e78","isMergeCommit":true,"messageTitle":"Merge pull request #11 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"bd33699a9efb55ab56d0988e4c16cc626213bb3d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4df90c54a030894eef7965ed2a9fa6f6fff9958e","isMergeCommit":false,"messageTitle":"Update refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":1}}},{"hash":"579f6e74ba44bc3242b2d1b02ffdbc1c5e4e2620","isMergeCommit":false,"messageTitle":"Test storage manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"2733e3abfc382ee31979da3bd4da88b81f8bedd4","isMergeCommit":false,"messageTitle":"Test JsonSerializablePropertyBook","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":0}}},{"hash":"101efb459c1038ad21dd1844994edd370b5fda16","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":8,"deletions":6}}},{"hash":"722018c694f62ff021ca948885b17343ef9f7d57","isMergeCommit":true,"messageTitle":"Merge pull request #12 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"916bb8c3bd6b685b0b8ab441b2b146fa737a29a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36345df42d66bd9809dc1b2baedbd29876420e0d","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"17f49c07c51841208134bc6df7b570d21fa8b26a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Virusrwj223/storage","messageBody":"Setup Storage","fileTypesAndContributionMap":{}},{"hash":"da393e61d0242880ad0b3b8b45623f5e07124268","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"883c5ea2c64028a9148e80d8af0582e6838a648f","isMergeCommit":false,"messageTitle":"Update logic manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"28c2d6cda7ddacd482bb1741fe64bdfb64b8fe67","isMergeCommit":false,"messageTitle":"Add addPropertyCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":0}}},{"hash":"fa68a287c03dea3dffca208b4944742368b5953e","isMergeCommit":false,"messageTitle":"Add parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"357353d6eaed7b94e49ed60329fef543426acc81","isMergeCommit":false,"messageTitle":"Test logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":272,"deletions":0}}},{"hash":"2a85336df464d5112bc274611417903732298e40","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Virusrwj223/Logic","messageBody":"Add Property logic","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"55c8f47f7e36c7d9d743e5044f59e5a9e7adbff9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"0d146d68134e295f13e478d154bcccf42c2c7697","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4cd7302c0e46fe09f4f5b95312c0b76553972d3","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":1}}},{"hash":"fb0b9ff3129fe04d6e3735f4d3112efe45f1912b","isMergeCommit":false,"messageTitle":"Change phone number","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"850dd467fa0e0271847af2f3bd9e03dd2775dfbd","isMergeCommit":false,"messageTitle":"Change phone number","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5b622d1089cd0f54e94ff633a7f9a080b1746dd8","isMergeCommit":false,"messageTitle":"Fix spelling error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"26969696dd71ac7d56d83fae3fa99fda8a84a717","isMergeCommit":true,"messageTitle":"Merge pull request #91 from Virusrwj223/Documentation","messageBody":"Update DeveloperGuide for add property","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"6ce37931825391685c0921f43237034df47ce7b9","isMergeCommit":false,"messageTitle":"Add summary table","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"34dec6d9c37256c8dd8fffae2daf8769dd170552","isMergeCommit":true,"messageTitle":"Merge pull request #15 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"974512e4f3093ede0da1263252887144c4483d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73f5779adceed4e2b8153d7bc601b43c302a8fcc","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Virusrwj223/Documentation","messageBody":"Add addproperty to summary table in UG","fileTypesAndContributionMap":{}}]}],"apollo-tan":[{"date":"2024-10-02","commitResults":[{"hash":"f7909a9d6fc982df53b5b8e042cbd8eea4c7ed51","isMergeCommit":true,"messageTitle":"Merge pull request #36 from apollo-tan/add-shiXin-photo","messageBody":"Add Shi Xin\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"a5ca3d64d9a9c545deac4fcb096351639b80ba74","isMergeCommit":false,"messageTitle":"Update DG with information pertaining to the list feature","messageBody":"Update the DG: user stories, glossary, NFRs, use cases that is related to the List Feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":9}}},{"hash":"686fb829922c1c3eb06c29eac5a340d7c82bd80f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"7e7d097a612c6c716bfc61e81b54b05e49d64b8b","isMergeCommit":false,"messageTitle":"Resolve extra apostrophe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":7}}},{"hash":"549b5c9aa8daa8ad1e9409be2026315fb4ac1cd0","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3d8acba099b5bebe5cf31839c4730ed87377d6bd","isMergeCommit":false,"messageTitle":"Fix AboutUs style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"794570713c31507fc9560fc0f61d9c3c9392c8db","isMergeCommit":false,"messageTitle":"Add rudimentary support for list command","messageBody":"Add ListCommandParser to parse arguments and create the correct ListCommand associated with the correct key\nUpdate ListCommand to store the key and act accordingly\nUpdate AddressBookParser to parse the new version of the ListCommand appropriately\nUpdate CliSyntax to account for new command prefix KEY\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":4}}},{"hash":"caaf1b4eac9a466180444eb0a00674124d7b17ca","isMergeCommit":false,"messageTitle":"Fix style issues and added some JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":36},"test-code":{"insertions":49,"deletions":29}}},{"hash":"a025a6e9f971a934a90ca9c5161f19030a675dbe","isMergeCommit":false,"messageTitle":"Fix code coverage issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":11}}},{"hash":"52653c5e3354af69ab2d243458be9f97ec29b2e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-setup-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9e58c0a8cf06499a28a580e3ec9aee8a46a0485","isMergeCommit":true,"messageTitle":"Merge pull request #65 from apollo-tan/branch-setup-list-command","messageBody":"Add rudimentary support for list command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"677d3402c0025e0941623bfe7ee8a03f289d94e8","isMergeCommit":false,"messageTitle":"Add Client Type information to the ClientCard display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"315c45e4dcf796593cd4866119edd0ddac62f807","isMergeCommit":false,"messageTitle":"Add support for filtering based on Clients, Buyers and Sellers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"7393a5d3781f700ed8c24ee008afb3e6b1e1cb49","isMergeCommit":false,"messageTitle":"Update ModelManager and Model to support display of properties","messageBody":"- Add getFilteredPropertyList method to ModelManager and Model\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"5a83e144a374bacc894ae7235d602ecf2e84ad11","isMergeCommit":false,"messageTitle":"Update UI to support for display of properties - Update LogicManager and Logic to support fetch of getFilteredPropertyList - Add components and controllers to support display of properties - Temporary configure MainWindow to only display the properties","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":4}}},{"hash":"323309102e937435d451acf75e7d236fe006ce59","isMergeCommit":false,"messageTitle":"Add full support for list feature - Modify UI and Model to support toggling between display of Clients and Properties based on user command - Modify execute logic of ListCommand to support the display toggling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":10}}},{"hash":"615589b56a6425ea6b85463679e7f2d39272ad6a","isMergeCommit":false,"messageTitle":"Refactor ListCommand logic to have more OOP","messageBody":"- Convert ListCommand to an abstract class and create subclasses to handle the actual logic of listing instead\n- Update ListCommandParser to reflect this change\n","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":77}}},{"hash":"fc853c0aff722c7119bf88624c28522049132858","isMergeCommit":false,"messageTitle":"Update Test Cases in ListCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":19}}},{"hash":"5e8ec2674845b5c1b7561856b95afdebb152fded","isMergeCommit":false,"messageTitle":"Fix styling issues and add java docs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":28},"test-code":{"insertions":10,"deletions":7}}}]},{"date":"2024-10-15","commitResults":[{"hash":"591339ca62c11ea2e374801c53031c13e7f87d9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-continue-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5281f080d62e7d78012dfeb706db77901343667a","isMergeCommit":false,"messageTitle":"Modify text in PropertyListCard to be consistent with ClientListCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9e195f17edf74471a2a115ff86da54a817dc3898","isMergeCommit":false,"messageTitle":"Add test cases to uncovered code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":57,"deletions":2}}},{"hash":"6606861ab0edda2eb2e98b0ad1da5e067b4c80f2","isMergeCommit":false,"messageTitle":"Add additional tests for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":0}}},{"hash":"e4ecc6b03995b3b9ce09fe83b5b5c1f47828973e","isMergeCommit":false,"messageTitle":"Refactor code to look neater","messageBody":"- Remove unnecessary logs\n- Modify execute command slightly to make more readable\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":12},"test-code":{"insertions":57,"deletions":0}}}]},{"date":"2024-10-16","commitResults":[{"hash":"b1711cf7fb45a8ffc3a8bb6c182d8602870e3446","isMergeCommit":true,"messageTitle":"Merge pull request #88 from apollo-tan/branch-continue-list-command","messageBody":"Complete List Command ","fileTypesAndContributionMap":{}},{"hash":"e28871f809c722ffe64f3e29457a050ed2a2fa40","isMergeCommit":false,"messageTitle":"Update UserGuide for new list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":6}}},{"hash":"d87de50e4ab51a7d9e70e1702be0e0b531f5bff6","isMergeCommit":true,"messageTitle":"Merge pull request #96 from apollo-tan/branch-update-ug-for-list-command","messageBody":"Update User Guide for list command","fileTypesAndContributionMap":{}},{"hash":"92dc747b5a8bdf17618691ab90e8314588df0ecf","isMergeCommit":false,"messageTitle":"Move tests for subclasses of ListCommand into their own test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":205,"deletions":82}}},{"hash":"197c82b01510ca6f5c7078bc127eda24d71d9016","isMergeCommit":true,"messageTitle":"Merge pull request #98 from apollo-tan/branch-more-tests-for-list-feature","messageBody":"Move tests for subclasses of ListCommand into their own test files","fileTypesAndContributionMap":{}}]}],"thony-ui":[{"date":"2024-09-29","commitResults":[{"hash":"2f14b83cd9b143686919252a8aadb61ed61e8e89","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2024-10-01","commitResults":[{"hash":"6cc509d2565db5135f9d4371a14bec3c7d804a1a","isMergeCommit":false,"messageTitle":"Update site wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"47ca1c34e72440ff028bc41ac0de223f0d13bc3c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from thony-ui/update-site-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"88e291560a669abbcf8e3e5ad6cda56067692929","isMergeCommit":false,"messageTitle":"Developer guide for delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":14}}},{"hash":"c0a193abdd6257565dd108443a796b5ebb9b6bd4","isMergeCommit":true,"messageTitle":"Fix merge conflict for developer guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d12d9d32c95b7424cc8c88a70df4eeec74bc5b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from thony-ui/delete-client-developer-guide","messageBody":"Developer guide for delete clients","fileTypesAndContributionMap":{}},{"hash":"dfd4b00cadb1fd81ddc373b8d2a36c21fedc606c","isMergeCommit":false,"messageTitle":"Add pore commit to checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":9,"deletions":0}}},{"hash":"03a369cacff869124e50c9fc9744ae8d997fa9c0","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"cd873661a0965d078104dc9f1986cb75e1318a5c","isMergeCommit":true,"messageTitle":"Merge pull request #44 from jolwnn/dg-delete-property","messageBody":"Update Developer Guide Delete Property","fileTypesAndContributionMap":{}},{"hash":"bc92d3fc9f62803213141a2b8be1c931a39672ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b0bb135f2244d28786eb188457f2980c2e8e75e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Virusrwj223/DeveloperGuide","messageBody":"Update Developer guide create property","fileTypesAndContributionMap":{}},{"hash":"b9b45803060e45e2934428de0aaaa4c9e548c48a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-developer-guide-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"154e32951f98f787890e643631d6a69e52151b71","isMergeCommit":true,"messageTitle":"Merge pull request #42 from apollo-tan/update-developer-guide-list","messageBody":"Update DG with information pertaining to the list feature","fileTypesAndContributionMap":{}},{"hash":"a8e2481eb4d65df064bdd5d3ba07bffec14dd424","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-shixin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81297726ac532bd76450e19b04195d0b3884c96b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from apollo-tan/update-aboutus-shixin","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"63e7357ca674a0770e2339bec370029dcc9467ef","isMergeCommit":false,"messageTitle":"First step to ensure delete client works","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0},"test-code":{"insertions":47,"deletions":0}}},{"hash":"e885ae7616fe91af6e24afe2ccc6fb870c06b8ef","isMergeCommit":false,"messageTitle":"Make parser for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":24},"test-code":{"insertions":58,"deletions":6}}},{"hash":"31d25d6f9884a83b972213c2f60077a4d0533099","isMergeCommit":false,"messageTitle":"Added test cases for DeleteSeller and DeleteBuyer command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":74,"deletions":0}}},{"hash":"63e1416bd52b465e41deb5c3445743a5864643d5","isMergeCommit":false,"messageTitle":"Delete client command done","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":23,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e3dba282175df868d2bc4224882bc5bb62c6ef2f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from thony-ui/delete-client-branch","messageBody":"First step to ensure delete client works","fileTypesAndContributionMap":{}},{"hash":"fdd63bec747a72f7ee4b6428c949fdb3fbfab63e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yongkheehou/fix-v1.2-test-cases","messageBody":"Fix v1.2 test cases","fileTypesAndContributionMap":{}},{"hash":"8885986a9cdccbd39dae728e122d74680b943b45","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Virusrwj223/CreateProperty","messageBody":"Create property Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"d4ff219408ad20e2c2f444801a4e9b85da5a0916","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":32},"test-code":{"insertions":11,"deletions":6}}},{"hash":"f589cb47a4d849fc11ee1cad6f336984ec5df80e","isMergeCommit":true,"messageTitle":"Merge pull request #68 from thony-ui/complete-delete-command","messageBody":"Fix errors","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"35c8cb8d4a02c31da4be25122bf2fcc4407231f2","isMergeCommit":false,"messageTitle":"Complete delete command logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":4,"deletions":5}}},{"hash":"8922a436464653d31b05b6ecea46cea15133d2cb","isMergeCommit":false,"messageTitle":"Delete buyer and seller command completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"498977696d9273f9e113371dcd8da8baf264ade1","isMergeCommit":false,"messageTitle":"Refractor to phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":19,"deletions":14}}},{"hash":"9c4a11b9fa5949c74449ccdc4d99b22c9f420807","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-command-logic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40248ab7cb9fd2ae991c961d8868ae7dea740b05","isMergeCommit":true,"messageTitle":"Merge pull request #72 from thony-ui/delete-command-logic","messageBody":"Delete command logic","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"6042a4a4b9d3376957fdbbed4893a6cc461c31cf","isMergeCommit":false,"messageTitle":"Finish up userguid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":11}}},{"hash":"e36230ccf436d5eddb24ff9fb19127cec057c8f4","isMergeCommit":true,"messageTitle":"Merge pull request #87 from thony-ui/anthony/user-guide","messageBody":"Finish up userguid","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yongkheehou":{"docs":82,"functional-code":1830,"test-code":1828,"other":2},"jolwnn":{"docs":51,"functional-code":222,"test-code":321},"Virusrwj223":{"docs":44,"functional-code":1028,"test-code":1005},"apollo-tan":{"docs":41,"functional-code":453,"test-code":377},"thony-ui":{"docs":63,"functional-code":253,"test-code":188,"other":9}},"authorContributionVariance":{"yongkheehou":246597.73,"jolwnn":8402.691,"Virusrwj223":57971.42,"apollo-tan":21704.588,"thony-ui":10413.395},"authorDisplayNameMap":{"yongkheehou":"CS2103T-T16-2 YONG.. HOU","jolwnn":"CS2103T-T16-2 WEE .. LIN","Virusrwj223":"CS2103T-T16-2 HRIS..NDAL","apollo-tan":"CS2103T-T16-2 TAN .. XIN","thony-ui":"CS2103T-T16-2 ANTH..ANTO"}} +{"authorDailyContributionsMap":{"yongkheehou":[{"date":"2024-09-30","commitResults":[{"hash":"0e52d0348a593a5103e1c40b4b709741a5d0b042","isMergeCommit":false,"messageTitle":"Update AboutUs page with Khee Hou information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1eb3010b28dafd7f26bcae690d0f5596c49f9d48","isMergeCommit":false,"messageTitle":"Update DG for addbuyer and addseller use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":28}}},{"hash":"fc03bd1e1d4d4ba2aee242aab1890374e8eb8036","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yongkheehou/chore/update-dg-add-clients","messageBody":"Update DG for addbuyer and addseller use case","fileTypesAndContributionMap":{}},{"hash":"499c10eec65ca9c92037d3c689697916915ca94f","isMergeCommit":false,"messageTitle":"Update product page names to ClientGrid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"bd6a142ec88aa3ba297784ea8108ba16411473f1","isMergeCommit":true,"messageTitle":"Merge pull request #37 from yongkheehou/chore/fix-product-page-names","messageBody":"Update product page names to ClientGrid","fileTypesAndContributionMap":{}},{"hash":"ba7c04d141ed4d13db2419279d9890c1cd7d92e8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from thony-ui/add-precommit-hook","messageBody":"Add pre commit to checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8a06e335cd651d883f05a6d4a3e0ff15503c5e65","isMergeCommit":true,"messageTitle":"Merge pull request #18 from yongkheehou/chore/update-aboutus-kheehou","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"bfcba46eba249d9fce72c86e0bb467537d1a55c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Anthony/AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba671239a3de2b947e2fbfcfa8bc0a5337ebcb60","isMergeCommit":true,"messageTitle":"Merge pull request #10 from thony-ui/Anthony/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"e4606d0ca8df983a472135d91cbee63d9503f9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e688bb047e2c6f65a55c91a65a9a1236e148831","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jolwnn/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"69e0e43e1931cb90e4dab8e8d1800697b509e355","isMergeCommit":false,"messageTitle":"Fix UG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"28558f9ea0e55cb544dc05e8e65dbdff7ac41e67","isMergeCommit":false,"messageTitle":"Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"e49c63c0e50f07e793ee70a2c48821053a7d549e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yongkheehou/fix-dg-formatting","messageBody":"Fix DG formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"d64aec6a759c9f38290086c884185cfb466ef958","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Virusrwj223/CreateProperty","messageBody":"Define Property Model","fileTypesAndContributionMap":{}},{"hash":"efec37dce1dddf858ff66395dad78232c52fb3ef","isMergeCommit":false,"messageTitle":"Add model and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":823,"deletions":5},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f07b41d9b8fe8a5eca365ed0cc5155bb20c4f055","isMergeCommit":false,"messageTitle":"Add changes to MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":396,"deletions":23},"test-code":{"insertions":215,"deletions":33}}}]},{"date":"2024-10-10","commitResults":[{"hash":"a55e0e76f0661da33fe97ce84e649041742e585e","isMergeCommit":false,"messageTitle":"Improve test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":620,"deletions":10}}},{"hash":"558d9f6486970ade7778dc790c8c424a59cea632","isMergeCommit":false,"messageTitle":"Fix Checkstyle for ClientBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3c0f0f99bb580d14d264814cf513762be41f00fa","isMergeCommit":false,"messageTitle":"Update ModelManager and StorageManager tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":6}}},{"hash":"b80abc1a0a1ad5f30731ff0b49a91383ffc91c52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into define-buyer-seller-models","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a7f3abac0f8023cea26e9cc0978537b7b6b88c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yongkheehou/define-buyer-seller-models","messageBody":"Define Buyer/ Seller Models","fileTypesAndContributionMap":{}},{"hash":"292f8a9d3f41733bb0b060f463c5f26b92525e91","isMergeCommit":false,"messageTitle":"Fix v1.2 test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d5b3b73fa37f67a50241c460f2ce21c0887cc29d","isMergeCommit":false,"messageTitle":"Make Client an abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":56},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e51916789751d009f4d1512e7766dc2ac6a171b4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":308,"deletions":0}}},{"hash":"4119a4f87152b74f28b0dd2de74c7fbeb3a347be","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yongkheehou/fix-make-client-abstract-class","messageBody":"Make Client an abstract class","fileTypesAndContributionMap":{}},{"hash":"a169bc4f08c10047db239e337b9f5e170579e346","isMergeCommit":false,"messageTitle":"Add logic classes for addbuyer and addseller cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":5},"test-code":{"insertions":582,"deletions":18}}},{"hash":"dfa410a01f38efc4a4ba1a5e025a8f35d0a8e044","isMergeCommit":true,"messageTitle":"Merge pull request #73 from yongkheehou/add-logic-classes-for-addbuyer-seller-commands","messageBody":"Add logic classes for addbuyer and addseller cmds","fileTypesAndContributionMap":{}},{"hash":"1c5effac008f777302c7b67892b8380ed5e07b33","isMergeCommit":false,"messageTitle":"Add UI classes for addbuyer/ addseller","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":5},"other":{"insertions":19,"deletions":1},"test-code":{"insertions":179,"deletions":0}}},{"hash":"a7ae718a10758fd85ca599ec0e3f259e4eb69f7d","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bfd7f8f67988b1d538af631379e4f23baaebd6b7","isMergeCommit":false,"messageTitle":"Fix junit syntax","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":7,"deletions":6}}},{"hash":"4dfe9e0c2d7ff59b8960006558fd54d96c4583c2","isMergeCommit":false,"messageTitle":"Remove GUI testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":21},"test-code":{"insertions":0,"deletions":179}}},{"hash":"ab68dd3ca74c0ad993683161c5bbd37de61e664a","isMergeCommit":false,"messageTitle":"Wrap client book with constructor in edit cmd test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"f190b2a61cd71efd8a52832a5e302989f7584a45","isMergeCommit":true,"messageTitle":"Merge pull request #79 from yongkheehou/small-fix-to-tests","messageBody":"Wrap client book with constructor in edit cmd test","fileTypesAndContributionMap":{}},{"hash":"66015818877c983f0159d440e1bf1c0e9b11b998","isMergeCommit":false,"messageTitle":"Small Fix to SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"14f31c38302e18d6eaa2a5f54e5d520245102c70","isMergeCommit":true,"messageTitle":"Merge pull request #78 from yongkheehou/add-ui-classes-for-addbuyer-seller-commands-2","messageBody":"Add UI classes for addbuyer/ addseller [2]","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"eba663a4094a5a1adea7ef6c936554443fb6dd5a","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"docs":{"insertions":42,"deletions":5},"test-code":{"insertions":16,"deletions":17}}},{"hash":"0e3d266f99fc5de275aa5de183768b4b351ca6be","isMergeCommit":true,"messageTitle":"Merge pull request #89 from yongkheehou/update-user-guide-for-addbuyer-addseller","messageBody":"Update User Guide For Add Buyer/ Seller Commands","fileTypesAndContributionMap":{}}]},{"date":"2024-10-17","commitResults":[{"hash":"46aedd9e90ab634cb6255e95914b2ab537c669e7","isMergeCommit":false,"messageTitle":"Update images","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"13c9a4898bf519e1b8d81b3f49858df748ab918c","isMergeCommit":false,"messageTitle":"Fix small bug in delete command phone nums","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"cc47d63be6fbd2f92cbe916040c349df22e706b5","isMergeCommit":true,"messageTitle":"Merge pull request #101 from yongkheehou/update-client-command-userguide-images","messageBody":"Update images for client commands in user guide","fileTypesAndContributionMap":{}}]}],"jolwnn":[{"date":"2024-10-02","commitResults":[{"hash":"8e32b16db2747babd32fef18a7fe2f820303c930","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-03","commitResults":[{"hash":"edf80036815c47c6ce43498eddd880f6f6a242a2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jolwnn/add-zhuolin-photo","messageBody":"Add Zhuo Lin\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"3ada6bd82bbfd4edab0e764179da7b8fb4c3a7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T16-2:master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"335104a6889daa839bf49a93075d3939f6a8de99","isMergeCommit":false,"messageTitle":"Update developer guide with delete property use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"9d0c4f2212b34db370eeff3fe3117738434db9d8","isMergeCommit":false,"messageTitle":"Update with minor changes to use case 1, 2, 4","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":14}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b05d6ee1ffc5a7f342a2a5dc534abea0516561c0","isMergeCommit":false,"messageTitle":"Add command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":1}}},{"hash":"7618561f6d5e98f77c455cc7b82ec77d3922c3e3","isMergeCommit":false,"messageTitle":"Add tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":0}}},{"hash":"85ef40c8179e3e8750f178903399209679a6a076","isMergeCommit":false,"messageTitle":"Fix failing tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"38d350ca1e3aee9f2563c30473c5e50c962b206e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"4dab0353f166add8365abc47895db7fc8f017e83","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jolwnn/delete-property-setup","messageBody":"Initial Set Up for Delete Properties Command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"39ce983127f95ee3317179c28e18953ddc13f891","isMergeCommit":false,"messageTitle":"Add functionality for delete property command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":4}}},{"hash":"3f7cafe0bf11a5b7407481267894439469543093","isMergeCommit":false,"messageTitle":"Add tests for delete property command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":78,"deletions":19}}},{"hash":"02c1f07624e92c2b1a574e2faa586185e932059e","isMergeCommit":false,"messageTitle":"Add tests for delete property command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":92,"deletions":10}}},{"hash":"a0c2543ac7fe2e7f47aba5abeaca9c7e2884da92","isMergeCommit":false,"messageTitle":"Fix failing test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":6,"deletions":4}}},{"hash":"dffc577a34bfc629401d8a8b6eb0d9e233822701","isMergeCommit":false,"messageTitle":"Add tests for modelmanager and addressbookparser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":58,"deletions":19}}},{"hash":"793724e20b7a540504d1f11b609306bfdd87ebe3","isMergeCommit":true,"messageTitle":"Merge pull request #85 from jolwnn/delete-property-command","messageBody":"Delete property command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"a83d97f2b47f5907fae61945f77370c7626de20c","isMergeCommit":false,"messageTitle":"Update user guide with delete property command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":18}}},{"hash":"96c1906d1e07f825f28d621207f4f80c8c0a1658","isMergeCommit":true,"messageTitle":"Merge pull request #100 from jolwnn/update-ug","messageBody":"Update user guide with delete property command","fileTypesAndContributionMap":{}}]}],"Virusrwj223":[{"date":"2024-09-30","commitResults":[{"hash":"15c5054da033ec4b30c591bca1582257e31cffe9","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"fb880b1a2a9bd07e0e7f6093be18eb54deabd563","isMergeCommit":true,"messageTitle":"Merge branch \u0027photograph\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e266eba435f662e0be96b179d8a19e3eba2dc16","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba8e0a9374b1e68d9fec4dc3f5ca1c68bcda7e28","isMergeCommit":false,"messageTitle":"Add responsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fcb30f80a1a30ceaed9ae33161e459c79afde775","isMergeCommit":false,"messageTitle":"Update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":9}}},{"hash":"6f465aedb64f1c1fc60dcb293d852147ac99cc00","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Virusrwj223/ProjectReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"65d5defc91b8f34d1e8b89c00ffd5ef38209399c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"249a39fa70e561294d6f12523d634b8ec4281efc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"152ae5d38f0ce0cb675301753871c368d62b34ac","isMergeCommit":false,"messageTitle":"Update Develop Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":24}}}]},{"date":"2024-10-03","commitResults":[{"hash":"d4bd635251a099986b322f57bc936741c1cc15c6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"aa273dd815e038b21c668a2e3d9de96622f36ce7","isMergeCommit":true,"messageTitle":"Resolve merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a973bf40dce6f32ed4f123622f606872dafc9982","isMergeCommit":false,"messageTitle":"Add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8d5689958b6306914e03099b26b2c4c99fe97474","isMergeCommit":false,"messageTitle":"Shift add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"069b6afea39c2d6a5093f9ab16e7fa782c76655a","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b967ec0b965e048925fa9cf23e8f4d07c8d248f9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from Virusrwj223/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"2ab42a6e26c8b09858096f0747acf2df2e6f4bc0","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"2d6f1d226fe2cd0a8a6cf12dbfd2a7b2767aa6e8","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"8d57045838cd65c4a253b1c96f8cf77105003739","isMergeCommit":false,"messageTitle":"Define property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":0}}},{"hash":"729e94bf6e2cbd0c0093a627bca61909b83051dc","isMergeCommit":false,"messageTitle":"Add javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":10}}},{"hash":"e6639b8a5e85c9387f1cf421a926ad8673b83fdc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"f70b96d15bf844a03ada998de3d15f069e3cbcf3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":328,"deletions":0}}},{"hash":"c031141cd38a82f106128fc6721ca200c65908fe","isMergeCommit":false,"messageTitle":"Complete model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":26},"test-code":{"insertions":102,"deletions":22}}},{"hash":"ef7952fcba29f8de19fdb0d9fcad0eee71722456","isMergeCommit":false,"messageTitle":"Set up storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":14},"test-code":{"insertions":116,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"737803887c5d511974cbf2bf1ea854f2a96960d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b36057e8831c8220c1431396d909be09891a8bde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into CreateProperty","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b54b703152bf4ef017050c0d3291128ff6c8597c","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"3ed3c99c810f84810f5f7eb10d5a907f5722f875","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"590ef347aeeaa24eade4294bedc53f35c33f9699","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Virusrwj223/CreateProperty","messageBody":"Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"3ecd2ef473099b08ce2fba21c975b22440ad8dd1","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"f5ae6bcc5fe3ebda5752459defcb2763110cf9f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"402a6b5a9c96df32769ec99fdbfa3e64e5f6437d","isMergeCommit":false,"messageTitle":"Update merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":28},"test-code":{"insertions":162,"deletions":30}}},{"hash":"e8a9880a551ff58490968a34f7cb5d2010f37014","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"881c83c1db0055d73f15a272d8520ded28b3cec9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98783862ad67b577550ef762ef31a36648f35c1a","isMergeCommit":false,"messageTitle":"Update test signature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":2,"deletions":4}}},{"hash":"dae6252e053041809a8dae6076cbed1b4e481855","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Virusrwj223/Model","messageBody":"Model","fileTypesAndContributionMap":{}},{"hash":"3cc103723c74214def7872a7701635bfc07b7e78","isMergeCommit":true,"messageTitle":"Merge pull request #11 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"bd33699a9efb55ab56d0988e4c16cc626213bb3d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4df90c54a030894eef7965ed2a9fa6f6fff9958e","isMergeCommit":false,"messageTitle":"Update refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":1}}},{"hash":"579f6e74ba44bc3242b2d1b02ffdbc1c5e4e2620","isMergeCommit":false,"messageTitle":"Test storage manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"2733e3abfc382ee31979da3bd4da88b81f8bedd4","isMergeCommit":false,"messageTitle":"Test JsonSerializablePropertyBook","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":0}}},{"hash":"101efb459c1038ad21dd1844994edd370b5fda16","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":8,"deletions":6}}},{"hash":"722018c694f62ff021ca948885b17343ef9f7d57","isMergeCommit":true,"messageTitle":"Merge pull request #12 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"916bb8c3bd6b685b0b8ab441b2b146fa737a29a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36345df42d66bd9809dc1b2baedbd29876420e0d","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"17f49c07c51841208134bc6df7b570d21fa8b26a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Virusrwj223/storage","messageBody":"Setup Storage","fileTypesAndContributionMap":{}},{"hash":"da393e61d0242880ad0b3b8b45623f5e07124268","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"883c5ea2c64028a9148e80d8af0582e6838a648f","isMergeCommit":false,"messageTitle":"Update logic manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"28c2d6cda7ddacd482bb1741fe64bdfb64b8fe67","isMergeCommit":false,"messageTitle":"Add addPropertyCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":0}}},{"hash":"fa68a287c03dea3dffca208b4944742368b5953e","isMergeCommit":false,"messageTitle":"Add parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"357353d6eaed7b94e49ed60329fef543426acc81","isMergeCommit":false,"messageTitle":"Test logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":272,"deletions":0}}},{"hash":"2a85336df464d5112bc274611417903732298e40","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Virusrwj223/Logic","messageBody":"Add Property logic","fileTypesAndContributionMap":{}}]},{"date":"2024-10-15","commitResults":[{"hash":"55c8f47f7e36c7d9d743e5044f59e5a9e7adbff9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"0d146d68134e295f13e478d154bcccf42c2c7697","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4cd7302c0e46fe09f4f5b95312c0b76553972d3","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":1}}},{"hash":"fb0b9ff3129fe04d6e3735f4d3112efe45f1912b","isMergeCommit":false,"messageTitle":"Change phone number","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"850dd467fa0e0271847af2f3bd9e03dd2775dfbd","isMergeCommit":false,"messageTitle":"Change phone number","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5b622d1089cd0f54e94ff633a7f9a080b1746dd8","isMergeCommit":false,"messageTitle":"Fix spelling error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"26969696dd71ac7d56d83fae3fa99fda8a84a717","isMergeCommit":true,"messageTitle":"Merge pull request #91 from Virusrwj223/Documentation","messageBody":"Update DeveloperGuide for add property","fileTypesAndContributionMap":{}}]},{"date":"2024-10-16","commitResults":[{"hash":"6ce37931825391685c0921f43237034df47ce7b9","isMergeCommit":false,"messageTitle":"Add summary table","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"34dec6d9c37256c8dd8fffae2daf8769dd170552","isMergeCommit":true,"messageTitle":"Merge pull request #15 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"974512e4f3093ede0da1263252887144c4483d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73f5779adceed4e2b8153d7bc601b43c302a8fcc","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Virusrwj223/Documentation","messageBody":"Add addproperty to summary table in UG","fileTypesAndContributionMap":{}}]}],"apollo-tan":[{"date":"2024-10-02","commitResults":[{"hash":"f7909a9d6fc982df53b5b8e042cbd8eea4c7ed51","isMergeCommit":true,"messageTitle":"Merge pull request #36 from apollo-tan/add-shiXin-photo","messageBody":"Add Shi Xin\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"a5ca3d64d9a9c545deac4fcb096351639b80ba74","isMergeCommit":false,"messageTitle":"Update DG with information pertaining to the list feature","messageBody":"Update the DG: user stories, glossary, NFRs, use cases that is related to the List Feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":9}}},{"hash":"686fb829922c1c3eb06c29eac5a340d7c82bd80f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"7e7d097a612c6c716bfc61e81b54b05e49d64b8b","isMergeCommit":false,"messageTitle":"Resolve extra apostrophe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":7}}},{"hash":"549b5c9aa8daa8ad1e9409be2026315fb4ac1cd0","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3d8acba099b5bebe5cf31839c4730ed87377d6bd","isMergeCommit":false,"messageTitle":"Fix AboutUs style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"794570713c31507fc9560fc0f61d9c3c9392c8db","isMergeCommit":false,"messageTitle":"Add rudimentary support for list command","messageBody":"Add ListCommandParser to parse arguments and create the correct ListCommand associated with the correct key\nUpdate ListCommand to store the key and act accordingly\nUpdate AddressBookParser to parse the new version of the ListCommand appropriately\nUpdate CliSyntax to account for new command prefix KEY\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":4}}},{"hash":"caaf1b4eac9a466180444eb0a00674124d7b17ca","isMergeCommit":false,"messageTitle":"Fix style issues and added some JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":36},"test-code":{"insertions":49,"deletions":29}}},{"hash":"a025a6e9f971a934a90ca9c5161f19030a675dbe","isMergeCommit":false,"messageTitle":"Fix code coverage issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":11}}},{"hash":"52653c5e3354af69ab2d243458be9f97ec29b2e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-setup-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9e58c0a8cf06499a28a580e3ec9aee8a46a0485","isMergeCommit":true,"messageTitle":"Merge pull request #65 from apollo-tan/branch-setup-list-command","messageBody":"Add rudimentary support for list command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"677d3402c0025e0941623bfe7ee8a03f289d94e8","isMergeCommit":false,"messageTitle":"Add Client Type information to the ClientCard display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"315c45e4dcf796593cd4866119edd0ddac62f807","isMergeCommit":false,"messageTitle":"Add support for filtering based on Clients, Buyers and Sellers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"7393a5d3781f700ed8c24ee008afb3e6b1e1cb49","isMergeCommit":false,"messageTitle":"Update ModelManager and Model to support display of properties","messageBody":"- Add getFilteredPropertyList method to ModelManager and Model\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"5a83e144a374bacc894ae7235d602ecf2e84ad11","isMergeCommit":false,"messageTitle":"Update UI to support for display of properties - Update LogicManager and Logic to support fetch of getFilteredPropertyList - Add components and controllers to support display of properties - Temporary configure MainWindow to only display the properties","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":4}}},{"hash":"323309102e937435d451acf75e7d236fe006ce59","isMergeCommit":false,"messageTitle":"Add full support for list feature - Modify UI and Model to support toggling between display of Clients and Properties based on user command - Modify execute logic of ListCommand to support the display toggling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":10}}},{"hash":"615589b56a6425ea6b85463679e7f2d39272ad6a","isMergeCommit":false,"messageTitle":"Refactor ListCommand logic to have more OOP","messageBody":"- Convert ListCommand to an abstract class and create subclasses to handle the actual logic of listing instead\n- Update ListCommandParser to reflect this change\n","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":77}}},{"hash":"fc853c0aff722c7119bf88624c28522049132858","isMergeCommit":false,"messageTitle":"Update Test Cases in ListCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":19}}},{"hash":"5e8ec2674845b5c1b7561856b95afdebb152fded","isMergeCommit":false,"messageTitle":"Fix styling issues and add java docs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":28},"test-code":{"insertions":10,"deletions":7}}}]},{"date":"2024-10-15","commitResults":[{"hash":"591339ca62c11ea2e374801c53031c13e7f87d9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-continue-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5281f080d62e7d78012dfeb706db77901343667a","isMergeCommit":false,"messageTitle":"Modify text in PropertyListCard to be consistent with ClientListCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9e195f17edf74471a2a115ff86da54a817dc3898","isMergeCommit":false,"messageTitle":"Add test cases to uncovered code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":57,"deletions":2}}},{"hash":"6606861ab0edda2eb2e98b0ad1da5e067b4c80f2","isMergeCommit":false,"messageTitle":"Add additional tests for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":0}}},{"hash":"e4ecc6b03995b3b9ce09fe83b5b5c1f47828973e","isMergeCommit":false,"messageTitle":"Refactor code to look neater","messageBody":"- Remove unnecessary logs\n- Modify execute command slightly to make more readable\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":12},"test-code":{"insertions":57,"deletions":0}}}]},{"date":"2024-10-16","commitResults":[{"hash":"b1711cf7fb45a8ffc3a8bb6c182d8602870e3446","isMergeCommit":true,"messageTitle":"Merge pull request #88 from apollo-tan/branch-continue-list-command","messageBody":"Complete List Command ","fileTypesAndContributionMap":{}},{"hash":"e28871f809c722ffe64f3e29457a050ed2a2fa40","isMergeCommit":false,"messageTitle":"Update UserGuide for new list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":6}}},{"hash":"d87de50e4ab51a7d9e70e1702be0e0b531f5bff6","isMergeCommit":true,"messageTitle":"Merge pull request #96 from apollo-tan/branch-update-ug-for-list-command","messageBody":"Update User Guide for list command","fileTypesAndContributionMap":{}},{"hash":"92dc747b5a8bdf17618691ab90e8314588df0ecf","isMergeCommit":false,"messageTitle":"Move tests for subclasses of ListCommand into their own test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":205,"deletions":82}}},{"hash":"197c82b01510ca6f5c7078bc127eda24d71d9016","isMergeCommit":true,"messageTitle":"Merge pull request #98 from apollo-tan/branch-more-tests-for-list-feature","messageBody":"Move tests for subclasses of ListCommand into their own test files","fileTypesAndContributionMap":{}}]}],"thony-ui":[{"date":"2024-09-29","commitResults":[{"hash":"2f14b83cd9b143686919252a8aadb61ed61e8e89","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2024-10-01","commitResults":[{"hash":"6cc509d2565db5135f9d4371a14bec3c7d804a1a","isMergeCommit":false,"messageTitle":"Update site wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"47ca1c34e72440ff028bc41ac0de223f0d13bc3c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from thony-ui/update-site-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"88e291560a669abbcf8e3e5ad6cda56067692929","isMergeCommit":false,"messageTitle":"Developer guide for delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":14}}},{"hash":"c0a193abdd6257565dd108443a796b5ebb9b6bd4","isMergeCommit":true,"messageTitle":"Fix merge conflict for developer guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d12d9d32c95b7424cc8c88a70df4eeec74bc5b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from thony-ui/delete-client-developer-guide","messageBody":"Developer guide for delete clients","fileTypesAndContributionMap":{}},{"hash":"dfd4b00cadb1fd81ddc373b8d2a36c21fedc606c","isMergeCommit":false,"messageTitle":"Add pore commit to checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":9,"deletions":0}}},{"hash":"03a369cacff869124e50c9fc9744ae8d997fa9c0","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"cd873661a0965d078104dc9f1986cb75e1318a5c","isMergeCommit":true,"messageTitle":"Merge pull request #44 from jolwnn/dg-delete-property","messageBody":"Update Developer Guide Delete Property","fileTypesAndContributionMap":{}},{"hash":"bc92d3fc9f62803213141a2b8be1c931a39672ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b0bb135f2244d28786eb188457f2980c2e8e75e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Virusrwj223/DeveloperGuide","messageBody":"Update Developer guide create property","fileTypesAndContributionMap":{}},{"hash":"b9b45803060e45e2934428de0aaaa4c9e548c48a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-developer-guide-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"154e32951f98f787890e643631d6a69e52151b71","isMergeCommit":true,"messageTitle":"Merge pull request #42 from apollo-tan/update-developer-guide-list","messageBody":"Update DG with information pertaining to the list feature","fileTypesAndContributionMap":{}},{"hash":"a8e2481eb4d65df064bdd5d3ba07bffec14dd424","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-shixin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81297726ac532bd76450e19b04195d0b3884c96b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from apollo-tan/update-aboutus-shixin","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"63e7357ca674a0770e2339bec370029dcc9467ef","isMergeCommit":false,"messageTitle":"First step to ensure delete client works","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0},"test-code":{"insertions":47,"deletions":0}}},{"hash":"e885ae7616fe91af6e24afe2ccc6fb870c06b8ef","isMergeCommit":false,"messageTitle":"Make parser for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":24},"test-code":{"insertions":58,"deletions":6}}},{"hash":"31d25d6f9884a83b972213c2f60077a4d0533099","isMergeCommit":false,"messageTitle":"Added test cases for DeleteSeller and DeleteBuyer command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":74,"deletions":0}}},{"hash":"63e1416bd52b465e41deb5c3445743a5864643d5","isMergeCommit":false,"messageTitle":"Delete client command done","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":23,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e3dba282175df868d2bc4224882bc5bb62c6ef2f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from thony-ui/delete-client-branch","messageBody":"First step to ensure delete client works","fileTypesAndContributionMap":{}},{"hash":"fdd63bec747a72f7ee4b6428c949fdb3fbfab63e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yongkheehou/fix-v1.2-test-cases","messageBody":"Fix v1.2 test cases","fileTypesAndContributionMap":{}},{"hash":"8885986a9cdccbd39dae728e122d74680b943b45","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Virusrwj223/CreateProperty","messageBody":"Create property Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"d4ff219408ad20e2c2f444801a4e9b85da5a0916","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":32},"test-code":{"insertions":11,"deletions":6}}},{"hash":"f589cb47a4d849fc11ee1cad6f336984ec5df80e","isMergeCommit":true,"messageTitle":"Merge pull request #68 from thony-ui/complete-delete-command","messageBody":"Fix errors","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"35c8cb8d4a02c31da4be25122bf2fcc4407231f2","isMergeCommit":false,"messageTitle":"Complete delete command logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":4,"deletions":5}}},{"hash":"8922a436464653d31b05b6ecea46cea15133d2cb","isMergeCommit":false,"messageTitle":"Delete buyer and seller command completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"498977696d9273f9e113371dcd8da8baf264ade1","isMergeCommit":false,"messageTitle":"Refractor to phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":19,"deletions":14}}},{"hash":"9c4a11b9fa5949c74449ccdc4d99b22c9f420807","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-command-logic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40248ab7cb9fd2ae991c961d8868ae7dea740b05","isMergeCommit":true,"messageTitle":"Merge pull request #72 from thony-ui/delete-command-logic","messageBody":"Delete command logic","fileTypesAndContributionMap":{}}]},{"date":"2024-10-14","commitResults":[{"hash":"6042a4a4b9d3376957fdbbed4893a6cc461c31cf","isMergeCommit":false,"messageTitle":"Finish up userguid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":11}}},{"hash":"e36230ccf436d5eddb24ff9fb19127cec057c8f4","isMergeCommit":true,"messageTitle":"Merge pull request #87 from thony-ui/anthony/user-guide","messageBody":"Finish up userguid","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yongkheehou":{"docs":86,"functional-code":1830,"test-code":1828,"other":2},"jolwnn":{"docs":51,"functional-code":222,"test-code":321},"Virusrwj223":{"docs":44,"functional-code":1028,"test-code":1005},"apollo-tan":{"docs":41,"functional-code":453,"test-code":377},"thony-ui":{"docs":59,"functional-code":253,"test-code":188,"other":9}},"authorContributionVariance":{"yongkheehou":238665.38,"jolwnn":8135.2188,"Virusrwj223":56206.496,"apollo-tan":21041.607,"thony-ui":10073.956},"authorDisplayNameMap":{"yongkheehou":"CS2103T-T16-2 YONG.. HOU","jolwnn":"CS2103T-T16-2 WEE .. LIN","Virusrwj223":"CS2103T-T16-2 HRIS..NDAL","apollo-tan":"CS2103T-T16-2 TAN .. XIN","thony-ui":"CS2103T-T16-2 ANTH..ANTO"}} diff --git a/archive.zip b/archive.zip index 4789461e..2d3156c2 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index fc6f91f8..c98a30a2 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,55 +1,55 @@ -Oct 17, 2024 2:59:27 AM reposense.system.LogsManager addFileHandler +Oct 17, 2024 3:29:44 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 17, 2024 2:59:27 AM reposense.parser.BlurbMarkdownParser parse +Oct 17, 2024 3:29:44 AM reposense.parser.BlurbMarkdownParser parse INFO: Parsing Blurbs... -Oct 17, 2024 2:59:27 AM reposense.parser.BlurbMarkdownParser parse +Oct 17, 2024 3:29:44 AM reposense.parser.BlurbMarkdownParser parse INFO: Blurbs parsed successfully! -Oct 17, 2024 2:59:27 AM reposense.parser.CsvParser validateHeader +Oct 17, 2024 3:29:45 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Oct 17, 2024 2:59:27 AM reposense.parser.CsvParser validateHeader +Oct 17, 2024 3:29:45 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Oct 17, 2024 2:59:27 AM reposense.parser.CsvParser isLineMalformed +Oct 17, 2024 3:29:45 AM reposense.parser.CsvParser isLineMalformed WARNING: Line 3 in CSV file, author-config.csv, is malformed. Content: https://github.com/AY2425S1-CS2103-F11-2/tp.git,master,,,CS2103-F11-2 LOW .. IAN,, -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 17, 2024 2:59:27 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 17, 2024 3:29:45 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 17, 2024 2:59:27 AM reposense.parser.CsvParser validateHeader +Oct 17, 2024 3:29:45 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 17, 2024 2:59:28 AM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 17, 2024 3:29:45 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 @@ -65,2167 +65,2167 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-1/tp.git... +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-3/tp.git... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-4/tp.git... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-2/tp.git... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-1/tp.git... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-4/tp.git... +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git to complete... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git to complete... -Oct 17, 2024 2:59:28 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git to complete... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git completed! -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git completed! +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-2/tp.git... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git to complete... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [1/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git completed! -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git completed! +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [1/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-1/tp.git... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git to complete... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git completed! -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git completed! +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-3/tp.git... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git to complete... -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git completed! -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-4/tp.git... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git completed! +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:29:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git to complete... -Oct 17, 2024 2:59:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:29:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 17, 2024 2:59:29 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-4/tp.git... +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 17, 2024 3:29:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git to complete... +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:29:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git completed! -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git to complete... +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git to complete... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git to complete... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git completed! -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git to complete... -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git completed! -Oct 17, 2024 2:59:31 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git... -Oct 17, 2024 2:59:32 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git to complete... -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git completed! -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-4/tp.git... -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git to complete... +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-1/tp.git... -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git to complete... -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git to complete... -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git completed! -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-2/tp.git... -Oct 17, 2024 2:59:33 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git to complete... -Oct 17, 2024 2:59:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! -Oct 17, 2024 2:59:34 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 17, 2024 3:29:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 17, 2024 3:29:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 17, 2024 3:29:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git completed! +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-3/tp.git... -Oct 17, 2024 2:59:34 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git to complete... -Oct 17, 2024 2:59:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git completed! -Oct 17, 2024 2:59:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-1/tp.git... -Oct 17, 2024 2:59:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git to complete... -Oct 17, 2024 2:59:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 17, 2024 2:59:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) completed! +Oct 17, 2024 3:29:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) completed! +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! +Oct 17, 2024 3:29:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 17, 2024 3:29:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git completed! -Oct 17, 2024 2:59:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-1/tp.git... +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-3/tp.git... -Oct 17, 2024 2:59:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 17, 2024 2:59:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git to complete... +Oct 17, 2024 3:29:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 17, 2024 3:29:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git to complete... -Oct 17, 2024 2:59:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 17, 2024 2:59:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 17, 2024 3:29:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 17, 2024 3:29:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 17, 2024 3:29:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 17, 2024 3:29:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) completed! +Oct 17, 2024 3:29:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git completed! -Oct 17, 2024 2:59:35 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 17, 2024 3:29:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-2/tp.git... -Oct 17, 2024 2:59:35 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git to complete... -Oct 17, 2024 2:59:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) completed! -Oct 17, 2024 2:59:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) completed! -Oct 17, 2024 2:59:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 17, 2024 3:29:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 17, 2024 3:29:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! +Oct 17, 2024 3:29:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 17, 2024 3:29:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git completed! -Oct 17, 2024 2:59:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-4/tp.git... -Oct 17, 2024 2:59:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git to complete... -Oct 17, 2024 2:59:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git completed! -Oct 17, 2024 2:59:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-3/tp.git... -Oct 17, 2024 2:59:36 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git to complete... -Oct 17, 2024 2:59:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 17, 2024 2:59:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 17, 2024 2:59:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! -Oct 17, 2024 2:59:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 17, 2024 2:59:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 17, 2024 2:59:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 17, 2024 2:59:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) completed! -Oct 17, 2024 2:59:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git completed! -Oct 17, 2024 2:59:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 17, 2024 2:59:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-3/tp.git... -Oct 17, 2024 2:59:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git completed! -Oct 17, 2024 2:59:37 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git to complete... -Oct 17, 2024 2:59:37 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git completed! +Oct 17, 2024 3:29:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-2/tp.git... -Oct 17, 2024 2:59:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git to complete... -Oct 17, 2024 2:59:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 17, 2024 2:59:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git completed! -Oct 17, 2024 2:59:38 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-4/tp.git... -Oct 17, 2024 2:59:38 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git to complete... -Oct 17, 2024 2:59:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git completed! -Oct 17, 2024 2:59:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! +Oct 17, 2024 3:29:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-1/tp.git... -Oct 17, 2024 2:59:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git to complete... -Oct 17, 2024 2:59:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! -Oct 17, 2024 2:59:39 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git completed! +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git... -Oct 17, 2024 2:59:39 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git to complete... -Oct 17, 2024 2:59:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git completed! -Oct 17, 2024 2:59:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git... -Oct 17, 2024 2:59:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git to complete... -Oct 17, 2024 2:59:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 17, 2024 3:29:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git completed! -Oct 17, 2024 2:59:40 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:29:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) completed! +Oct 17, 2024 3:29:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 17, 2024 3:29:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-1/tp.git... -Oct 17, 2024 2:59:40 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git to complete... -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:29:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:29:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 17, 2024 3:29:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git completed! -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-4/tp.git... -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git to complete... -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git completed! -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-1/tp.git... -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git to complete... -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git completed! -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-4/tp.git... -Oct 17, 2024 2:59:41 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git to complete... -Oct 17, 2024 2:59:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 17, 2024 2:59:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git completed! -Oct 17, 2024 2:59:42 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-1/tp.git... -Oct 17, 2024 2:59:42 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git to complete... -Oct 17, 2024 2:59:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 17, 2024 2:59:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) completed! -Oct 17, 2024 2:59:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 17, 2024 2:59:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 17, 2024 2:59:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 17, 2024 3:30:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 17, 2024 3:30:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 17, 2024 3:30:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! +Oct 17, 2024 3:30:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git completed! -Oct 17, 2024 2:59:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 17, 2024 3:30:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-1/tp.git... -Oct 17, 2024 2:59:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git to complete... -Oct 17, 2024 2:59:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 17, 2024 2:59:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 17, 2024 3:30:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git completed! -Oct 17, 2024 2:59:43 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-1/tp.git... -Oct 17, 2024 2:59:43 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git to complete... -Oct 17, 2024 2:59:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 17, 2024 2:59:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! -Oct 17, 2024 2:59:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 17, 2024 2:59:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 17, 2024 2:59:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git completed! -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 17, 2024 3:30:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 17, 2024 3:30:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! +Oct 17, 2024 3:30:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 17, 2024 3:30:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 17, 2024 3:30:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git completed! +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-1/tp.git... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git completed! -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git to complete... +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-1/tp.git... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git to complete... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git to complete... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git completed! -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git completed! +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-4/tp.git... -Oct 17, 2024 2:59:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-3/tp.git... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git completed! +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git to complete... -Oct 17, 2024 2:59:45 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-3/tp.git... +Oct 17, 2024 3:30:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git to complete... -Oct 17, 2024 2:59:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! -Oct 17, 2024 2:59:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 17, 2024 2:59:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 17, 2024 2:59:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! -Oct 17, 2024 2:59:46 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! +Oct 17, 2024 3:30:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-2/tp.git... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git to complete... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! +Oct 17, 2024 3:30:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-4/tp.git... +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git to complete... +Oct 17, 2024 3:30:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git completed! -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git completed! -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-4/tp.git... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-3/tp.git... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) completed! +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git to complete... +Oct 17, 2024 3:30:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-4/tp.git... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git to complete... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git to complete... -Oct 17, 2024 2:59:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git to complete... -Oct 17, 2024 2:59:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 17, 2024 2:59:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 17, 2024 2:59:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! -Oct 17, 2024 2:59:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 17, 2024 2:59:48 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 17, 2024 2:59:48 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 17, 2024 3:30:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 17, 2024 3:30:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! +Oct 17, 2024 3:30:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 17, 2024 3:30:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git completed! -Oct 17, 2024 2:59:48 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 17, 2024 3:30:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-4/tp.git... -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git to complete... -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 17, 2024 3:30:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 17, 2024 3:30:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! +Oct 17, 2024 3:30:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 17, 2024 3:30:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 17, 2024 3:30:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git completed! -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-2/tp.git... -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git completed! -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git to complete... -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git completed! +Oct 17, 2024 3:30:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-2/tp.git... -Oct 17, 2024 2:59:49 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git to complete... -Oct 17, 2024 2:59:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 17, 2024 2:59:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git completed! -Oct 17, 2024 2:59:50 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-2/tp.git... -Oct 17, 2024 2:59:50 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git to complete... -Oct 17, 2024 2:59:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 17, 2024 2:59:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git completed! -Oct 17, 2024 2:59:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) completed! -Oct 17, 2024 2:59:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-3/tp.git... -Oct 17, 2024 2:59:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 17, 2024 2:59:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git to complete... -Oct 17, 2024 2:59:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 17, 2024 2:59:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! -Oct 17, 2024 2:59:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-4/tp.git... -Oct 17, 2024 2:59:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git to complete... -Oct 17, 2024 2:59:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 17, 2024 2:59:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 17, 2024 2:59:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! -Oct 17, 2024 2:59:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 17, 2024 2:59:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 17, 2024 2:59:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 17, 2024 2:59:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 17, 2024 2:59:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) completed! -Oct 17, 2024 2:59:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 17, 2024 2:59:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 17, 2024 3:30:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git completed! -Oct 17, 2024 2:59:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-3/tp.git... +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git to complete... +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git completed! +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-4/tp.git... +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git to complete... +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-4/tp.git... -Oct 17, 2024 2:59:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git to complete... -Oct 17, 2024 2:59:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 17, 2024 2:59:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git completed! -Oct 17, 2024 2:59:52 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-3/tp.git... -Oct 17, 2024 2:59:52 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git to complete... -Oct 17, 2024 2:59:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) completed! +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 17, 2024 3:30:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git completed! -Oct 17, 2024 2:59:53 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-3/tp.git... -Oct 17, 2024 2:59:53 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git to complete... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git completed! -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-1/tp.git... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git to complete... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git completed! -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git completed! +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-1/tp.git... +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-2/tp.git... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git to complete... +Oct 17, 2024 3:30:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git to complete... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git completed! -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git completed! +Oct 17, 2024 3:30:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-4/tp.git... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git to complete... -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git completed! -Oct 17, 2024 2:59:54 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-1/tp.git... -Oct 17, 2024 2:59:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git to complete... -Oct 17, 2024 2:59:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 17, 2024 3:30:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git completed! -Oct 17, 2024 2:59:55 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-4/tp.git... -Oct 17, 2024 2:59:55 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git to complete... -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 17, 2024 3:30:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) completed! +Oct 17, 2024 3:30:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 17, 2024 3:30:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git completed! -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git... -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git completed! -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 17, 2024 3:30:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git to complete... -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 17, 2024 3:30:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git completed! +Oct 17, 2024 3:30:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-1/tp.git... -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git to complete... -Oct 17, 2024 2:59:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! -Oct 17, 2024 2:59:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! -Oct 17, 2024 2:59:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! -Oct 17, 2024 2:59:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 17, 2024 2:59:56 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 17, 2024 3:30:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! +Oct 17, 2024 3:30:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 17, 2024 3:30:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 17, 2024 3:30:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git completed! +Oct 17, 2024 3:30:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-2/tp.git... -Oct 17, 2024 2:59:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git to complete... -Oct 17, 2024 2:59:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) completed! -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git completed! -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-3/tp.git... -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git to complete... -Oct 17, 2024 2:59:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git completed! -Oct 17, 2024 2:59:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git completed! +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-4/tp.git... -Oct 17, 2024 2:59:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! -Oct 17, 2024 2:59:57 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git to complete... -Oct 17, 2024 2:59:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 17, 2024 2:59:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git completed! -Oct 17, 2024 2:59:58 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git completed! +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-2/tp.git... -Oct 17, 2024 2:59:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 2:59:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 17, 2024 2:59:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git to complete... -Oct 17, 2024 2:59:58 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git completed! -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-3/tp.git... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git to complete... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git completed! -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-1/tp.git... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git to complete... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git completed! -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-2/tp.git... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git to complete... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 17, 2024 3:30:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 17, 2024 3:30:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git completed! -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-3/tp.git... -Oct 17, 2024 2:59:59 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git to complete... -Oct 17, 2024 3:00:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 17, 2024 3:30:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 17, 2024 3:30:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 17, 2024 3:30:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! +Oct 17, 2024 3:30:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 17, 2024 3:30:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git completed! -Oct 17, 2024 3:00:00 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git completed! +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-2/tp.git... -Oct 17, 2024 3:00:00 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git to complete... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git completed! -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-1/tp.git... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git to complete... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git completed! -Oct 17, 2024 3:00:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-1/tp.git... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git completed! -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git to complete... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git completed! +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-2/tp.git... -Oct 17, 2024 3:00:01 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git to complete... -Oct 17, 2024 3:00:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 17, 2024 3:00:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) completed! -Oct 17, 2024 3:00:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 17, 2024 3:00:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 17, 2024 3:00:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git completed! -Oct 17, 2024 3:00:02 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-1/tp.git... -Oct 17, 2024 3:00:02 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git to complete... -Oct 17, 2024 3:00:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 17, 2024 3:00:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 17, 2024 3:00:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! -Oct 17, 2024 3:00:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 17, 2024 3:00:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-3/tp.git... -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git to complete... -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git completed! -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! +Oct 17, 2024 3:30:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-4/tp.git... -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git to complete... -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git completed! +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-2/tp.git... -Oct 17, 2024 3:00:03 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git to complete... -Oct 17, 2024 3:00:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 17, 2024 3:30:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git completed! -Oct 17, 2024 3:00:04 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-3/tp.git... -Oct 17, 2024 3:00:04 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git to complete... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git completed! -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git completed! -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-4/tp.git... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git to complete... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-3/tp.git... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git to complete... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git completed! +Oct 17, 2024 3:30:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-2/tp.git... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 17, 2024 3:30:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git to complete... -Oct 17, 2024 3:00:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 17, 2024 3:30:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 17, 2024 3:30:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 17, 2024 3:30:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git completed! -Oct 17, 2024 3:00:05 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-1/tp.git... -Oct 17, 2024 3:00:06 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git to complete... -Oct 17, 2024 3:00:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 17, 2024 3:00:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! -Oct 17, 2024 3:00:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 17, 2024 3:00:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 17, 2024 3:30:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! +Oct 17, 2024 3:30:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 17, 2024 3:30:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 17, 2024 3:30:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git completed! -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-1/tp.git... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git to complete... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git completed! -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git completed! -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-3/tp.git... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git to complete... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-1/tp.git... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git to complete... +Oct 17, 2024 3:30:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! +Oct 17, 2024 3:30:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git to complete... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 17, 2024 3:30:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 17, 2024 3:30:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 17, 2024 3:30:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! +Oct 17, 2024 3:30:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 17, 2024 3:30:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 17, 2024 3:30:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git completed! -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 17, 2024 3:30:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-2/tp.git... -Oct 17, 2024 3:00:07 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git to complete... -Oct 17, 2024 3:00:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! -Oct 17, 2024 3:00:08 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 17, 2024 3:30:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! +Oct 17, 2024 3:30:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 17, 2024 3:30:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! +Oct 17, 2024 3:30:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-3/tp.git... -Oct 17, 2024 3:00:08 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git to complete... -Oct 17, 2024 3:00:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 17, 2024 3:30:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! +Oct 17, 2024 3:30:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-3/tp.git... -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git to complete... -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git completed! -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-4/tp.git... -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git completed! -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-2/tp.git... -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-4/tp.git... +Oct 17, 2024 3:30:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git to complete... -Oct 17, 2024 3:00:09 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 17, 2024 3:30:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git completed! +Oct 17, 2024 3:30:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-2/tp.git... +Oct 17, 2024 3:30:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git to complete... -Oct 17, 2024 3:00:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 17, 2024 3:00:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! -Oct 17, 2024 3:00:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! -Oct 17, 2024 3:00:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 17, 2024 3:30:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! +Oct 17, 2024 3:30:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 17, 2024 3:30:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 17, 2024 3:30:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git completed! -Oct 17, 2024 3:00:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 17, 2024 3:00:10 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-4/tp.git... -Oct 17, 2024 3:00:10 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 17, 2024 3:30:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git to complete... -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 17, 2024 3:30:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! +Oct 17, 2024 3:30:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 17, 2024 3:30:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git completed! -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git... -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git to complete... -Oct 17, 2024 3:00:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git completed! -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-1/tp.git... -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git to complete... -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git completed! +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git... -Oct 17, 2024 3:00:11 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git to complete... -Oct 17, 2024 3:00:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! -Oct 17, 2024 3:00:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 17, 2024 3:00:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 17, 2024 3:00:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git completed! -Oct 17, 2024 3:00:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-2/tp.git... -Oct 17, 2024 3:00:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git to complete... -Oct 17, 2024 3:00:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 17, 2024 3:30:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git completed! -Oct 17, 2024 3:00:12 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 17, 2024 3:30:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-3/tp.git... -Oct 17, 2024 3:00:12 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git to complete... -Oct 17, 2024 3:00:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 17, 2024 3:30:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 17, 2024 3:30:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! +Oct 17, 2024 3:30:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! +Oct 17, 2024 3:30:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 17, 2024 3:30:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 17, 2024 3:30:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 17, 2024 3:30:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 17, 2024 3:30:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git completed! -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-2/tp.git... -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git to complete... -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git completed! -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-3/tp.git... -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git completed! -Oct 17, 2024 3:00:13 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-3/tp.git... +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git to complete... -Oct 17, 2024 3:00:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git completed! +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-3/tp.git... -Oct 17, 2024 3:00:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 17, 2024 3:00:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git to complete... -Oct 17, 2024 3:00:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 17, 2024 3:00:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! -Oct 17, 2024 3:00:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 17, 2024 3:00:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 17, 2024 3:00:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! -Oct 17, 2024 3:00:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 17, 2024 3:00:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 17, 2024 3:00:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git completed! -Oct 17, 2024 3:00:14 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-4/tp.git... -Oct 17, 2024 3:00:14 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git to complete... -Oct 17, 2024 3:00:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 17, 2024 3:00:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git completed! -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-2/tp.git... -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git to complete... -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git completed! -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-3/tp.git... -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git to complete... -Oct 17, 2024 3:00:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 17, 2024 3:00:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git completed! +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git completed! -Oct 17, 2024 3:00:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 17, 2024 3:00:15 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-2/tp.git... -Oct 17, 2024 3:00:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git to complete... -Oct 17, 2024 3:00:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 17, 2024 3:00:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git completed! -Oct 17, 2024 3:00:16 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-2/tp.git... -Oct 17, 2024 3:00:16 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git to complete... +Oct 17, 2024 3:30:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git to complete... -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 17, 2024 3:30:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 17, 2024 3:30:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! +Oct 17, 2024 3:30:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 17, 2024 3:30:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 17, 2024 3:30:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git completed! -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-2/tp.git... -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git completed! -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git to complete... -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git completed! +Oct 17, 2024 3:30:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 17, 2024 3:30:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-4/tp.git... -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git to complete... -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git completed! -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 17, 2024 3:30:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! +Oct 17, 2024 3:30:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 17, 2024 3:30:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 17, 2024 3:30:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git completed! +Oct 17, 2024 3:30:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-3/tp.git... -Oct 17, 2024 3:00:17 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git to complete... -Oct 17, 2024 3:00:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git completed! -Oct 17, 2024 3:00:18 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 17, 2024 3:30:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git completed! +Oct 17, 2024 3:30:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git... -Oct 17, 2024 3:00:18 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git to complete... -Oct 17, 2024 3:00:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 17, 2024 3:00:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 17, 2024 3:00:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! -Oct 17, 2024 3:00:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 17, 2024 3:30:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! +Oct 17, 2024 3:30:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 17, 2024 3:30:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 17, 2024 3:30:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git completed! -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! -Oct 17, 2024 3:00:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-3/tp.git... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git to complete... -Oct 17, 2024 3:00:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 17, 2024 3:00:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git completed! -Oct 17, 2024 3:00:19 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-2/tp.git... -Oct 17, 2024 3:00:19 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git to complete... -Oct 17, 2024 3:00:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 17, 2024 3:00:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git completed! -Oct 17, 2024 3:00:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-1/tp.git... -Oct 17, 2024 3:00:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git to complete... -Oct 17, 2024 3:00:20 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git completed! -Oct 17, 2024 3:00:20 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git completed! +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-2/tp.git... -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-1/tp.git... +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git to complete... -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git to complete... +Oct 17, 2024 3:30:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git completed! -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-1/tp.git... -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git completed! -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! +Oct 17, 2024 3:30:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-2/tp.git... -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git to complete... -Oct 17, 2024 3:00:21 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git to complete... -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! +Oct 17, 2024 3:30:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 17, 2024 3:30:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git completed! -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-1/tp.git... -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git to complete... -Oct 17, 2024 3:00:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git completed! -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git completed! +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-4/tp.git... -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git to complete... -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git completed! -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git completed! +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-1/tp.git... -Oct 17, 2024 3:00:22 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git to complete... -Oct 17, 2024 3:00:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 17, 2024 3:00:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! -Oct 17, 2024 3:00:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 17, 2024 3:00:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git completed! -Oct 17, 2024 3:00:23 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git completed! +Oct 17, 2024 3:30:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-3/tp.git... -Oct 17, 2024 3:00:23 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git to complete... -Oct 17, 2024 3:00:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git completed! -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-2/tp.git... -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git completed! -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git to complete... -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-4/tp.git... -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git to complete... +Oct 17, 2024 3:30:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git to complete... -Oct 17, 2024 3:00:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 17, 2024 3:30:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 17, 2024 3:30:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! +Oct 17, 2024 3:30:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 17, 2024 3:30:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git completed! -Oct 17, 2024 3:00:24 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-4/tp.git... -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git to complete... -Oct 17, 2024 3:00:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 17, 2024 3:00:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git completed! -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-3/tp.git... -Oct 17, 2024 3:00:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git to complete... -Oct 17, 2024 3:00:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git completed! -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner spawnCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-4/tp.git... -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git to complete... -Oct 17, 2024 3:00:25 AM reposense.report.RepoCloner waitForCloneProcess +Oct 17, 2024 3:30:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git completed! -Oct 17, 2024 3:00:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! -Oct 17, 2024 3:00:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! -Oct 17, 2024 3:00:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! -Oct 17, 2024 3:00:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 17, 2024 3:00:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 17, 2024 3:00:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! -Oct 17, 2024 3:00:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 17, 2024 3:00:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 17, 2024 3:00:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 17, 2024 3:00:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 17, 2024 3:00:28 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) completed! -Oct 17, 2024 3:00:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 17, 2024 3:00:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! -Oct 17, 2024 3:00:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! -Oct 17, 2024 3:00:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 17, 2024 3:00:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 17, 2024 3:00:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 17, 2024 3:00:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! -Oct 17, 2024 3:00:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 17, 2024 3:00:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! -Oct 17, 2024 3:00:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [40/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! +Oct 17, 2024 3:30:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 17, 2024 3:30:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! +Oct 17, 2024 3:30:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! +Oct 17, 2024 3:30:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) completed! -Oct 17, 2024 3:00:31 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [41/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 17, 2024 3:00:32 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 17, 2024 3:00:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 17, 2024 3:00:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 17, 2024 3:00:32 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) completed! -Oct 17, 2024 3:00:32 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [42/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 17, 2024 3:30:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) completed! -Oct 17, 2024 3:00:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 17, 2024 3:30:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 17, 2024 3:30:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! +Oct 17, 2024 3:30:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 17, 2024 3:30:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 17, 2024 3:30:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 17, 2024 3:30:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 17, 2024 3:30:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 17, 2024 3:00:33 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) completed! -Oct 17, 2024 3:00:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 17, 2024 3:00:34 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 17, 2024 3:30:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 17, 2024 3:00:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 17, 2024 3:00:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 17, 2024 3:00:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! -Oct 17, 2024 3:00:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 17, 2024 3:00:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) completed! -Oct 17, 2024 3:00:35 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) completed! -Oct 17, 2024 3:00:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 17, 2024 3:00:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 17, 2024 3:00:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 17, 2024 3:00:36 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) completed! -Oct 17, 2024 3:00:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 17, 2024 3:00:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 17, 2024 3:30:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 17, 2024 3:30:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 17, 2024 3:30:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 17, 2024 3:30:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) completed! +Oct 17, 2024 3:30:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 17, 2024 3:30:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 17, 2024 3:30:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) completed! -Oct 17, 2024 3:00:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 17, 2024 3:00:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) completed! -Oct 17, 2024 3:00:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 17, 2024 3:00:38 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 17, 2024 3:30:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 17, 2024 3:00:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 17, 2024 3:00:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 17, 2024 3:00:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) completed! -Oct 17, 2024 3:00:38 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 17, 2024 3:30:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 17, 2024 3:30:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! +Oct 17, 2024 3:30:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 17, 2024 3:30:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 17, 2024 3:30:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 17, 2024 3:30:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 17, 2024 3:30:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) completed! +Oct 17, 2024 3:30:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [51/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 17, 2024 3:00:38 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! +Oct 17, 2024 3:30:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [52/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) completed! +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) completed! -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [54/120] Analyzing https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 17, 2024 3:00:39 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) completed! +Oct 17, 2024 3:30:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 17, 2024 3:30:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 17, 2024 3:30:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) completed! -Oct 17, 2024 3:00:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 17, 2024 3:30:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 17, 2024 3:30:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) completed! -Oct 17, 2024 3:00:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 17, 2024 3:00:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 17, 2024 3:00:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) completed! -Oct 17, 2024 3:00:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 17, 2024 3:00:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 17, 2024 3:00:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 17, 2024 3:00:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 17, 2024 3:30:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) completed! -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:30:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) completed! +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:30:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 17, 2024 3:30:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:30:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) completed! -Oct 17, 2024 3:00:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:30:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [59/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 17, 2024 3:00:42 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 17, 2024 3:31:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 17, 2024 3:31:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 17, 2024 3:00:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 17, 2024 3:00:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 17, 2024 3:00:43 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) completed! -Oct 17, 2024 3:00:43 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [61/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 17, 2024 3:00:43 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 17, 2024 3:00:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) completed! -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [62/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) completed! -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) completed! -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/120] Analyzing https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 17, 2024 3:00:44 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/120] Analyzing https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 17, 2024 3:00:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 17, 2024 3:00:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... +Oct 17, 2024 3:31:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 17, 2024 3:00:45 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) completed! -Oct 17, 2024 3:00:45 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) completed! +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [65/120] Analyzing https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 17, 2024 3:00:45 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 17, 2024 3:31:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! -Oct 17, 2024 3:00:46 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 17, 2024 3:31:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 17, 2024 3:31:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! +Oct 17, 2024 3:31:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [66/120] Analyzing https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! -Oct 17, 2024 3:00:46 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 17, 2024 3:31:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! +Oct 17, 2024 3:31:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [67/120] Analyzing https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 17, 2024 3:00:46 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 17, 2024 3:00:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 17, 2024 3:00:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 17, 2024 3:00:47 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) completed! -Oct 17, 2024 3:00:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 17, 2024 3:00:47 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 17, 2024 3:31:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 17, 2024 3:31:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... +Oct 17, 2024 3:31:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... +Oct 17, 2024 3:31:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) completed! +Oct 17, 2024 3:31:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 17, 2024 3:31:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) completed! -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) completed! -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) completed! -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [71/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 17, 2024 3:00:48 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 17, 2024 3:00:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 17, 2024 3:00:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) completed! -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 17, 2024 3:31:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) completed! -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) completed! -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 17, 2024 3:00:50 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) completed! -Oct 17, 2024 3:00:51 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) completed! +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) completed! -Oct 17, 2024 3:00:51 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [76/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 17, 2024 3:00:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) completed! -Oct 17, 2024 3:00:52 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... +Oct 17, 2024 3:31:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... +Oct 17, 2024 3:31:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) completed! +Oct 17, 2024 3:31:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [77/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 17, 2024 3:00:52 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 17, 2024 3:00:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 17, 2024 3:00:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 17, 2024 3:00:52 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) completed! -Oct 17, 2024 3:00:52 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [78/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... +Oct 17, 2024 3:31:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) completed! -Oct 17, 2024 3:00:53 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) completed! +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [79/120] Analyzing https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... +Oct 17, 2024 3:31:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 17, 2024 3:00:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) completed! -Oct 17, 2024 3:00:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) completed! +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 17, 2024 3:31:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) completed! -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 17, 2024 3:31:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) completed! -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) completed! -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 17, 2024 3:00:54 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 17, 2024 3:31:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 17, 2024 3:31:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 17, 2024 3:31:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) completed! +Oct 17, 2024 3:31:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... +Oct 17, 2024 3:31:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... +Oct 17, 2024 3:31:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) completed! -Oct 17, 2024 3:00:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) completed! -Oct 17, 2024 3:00:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/120] Analyzing https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 17, 2024 3:31:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 17, 2024 3:31:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 17, 2024 3:00:56 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 17, 2024 3:31:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) completed! +Oct 17, 2024 3:31:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/120] Analyzing https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 17, 2024 3:31:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [86/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 17, 2024 3:31:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) completed! -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [86/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) completed! -Oct 17, 2024 3:00:57 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 17, 2024 3:31:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [88/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 17, 2024 3:31:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) completed! -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [89/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) completed! -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [90/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 17, 2024 3:00:58 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 17, 2024 3:31:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) completed! -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:00:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 17, 2024 3:31:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 17, 2024 3:00:59 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) completed! -Oct 17, 2024 3:01:00 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [93/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 17, 2024 3:01:00 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 17, 2024 3:01:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 17, 2024 3:01:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 17, 2024 3:01:00 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) completed! -Oct 17, 2024 3:01:00 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [94/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 17, 2024 3:01:00 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) completed! -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [95/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [96/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) completed! -Oct 17, 2024 3:01:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [97/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 17, 2024 3:01:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! +Oct 17, 2024 3:31:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [96/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... +Oct 17, 2024 3:31:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 17, 2024 3:01:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 17, 2024 3:01:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 17, 2024 3:01:02 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) completed! -Oct 17, 2024 3:01:02 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [97/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... +Oct 17, 2024 3:31:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... +Oct 17, 2024 3:31:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... +Oct 17, 2024 3:31:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... +Oct 17, 2024 3:31:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) completed! +Oct 17, 2024 3:31:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 17, 2024 3:01:02 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 17, 2024 3:01:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 17, 2024 3:01:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 17, 2024 3:01:03 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) completed! -Oct 17, 2024 3:01:03 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [99/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 17, 2024 3:01:03 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 17, 2024 3:01:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 17, 2024 3:01:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 17, 2024 3:01:03 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) completed! -Oct 17, 2024 3:01:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [100/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 17, 2024 3:01:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 17, 2024 3:01:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 17, 2024 3:01:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [100/120] Analyzing https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 17, 2024 3:01:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) completed! -Oct 17, 2024 3:01:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [101/120] Analyzing https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 17, 2024 3:01:04 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 17, 2024 3:01:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) completed! +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) completed! -Oct 17, 2024 3:01:05 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [101/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [102/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) completed! -Oct 17, 2024 3:01:05 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [103/120] Analyzing https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 17, 2024 3:01:05 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) completed! -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) completed! -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [105/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 17, 2024 3:01:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 17, 2024 3:01:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) completed! +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 17, 2024 3:31:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 17, 2024 3:31:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 17, 2024 3:01:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 17, 2024 3:01:07 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) completed! -Oct 17, 2024 3:01:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [107/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) completed! -Oct 17, 2024 3:01:08 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [107/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... +Oct 17, 2024 3:31:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... +Oct 17, 2024 3:31:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 17, 2024 3:31:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 17, 2024 3:31:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! +Oct 17, 2024 3:31:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [108/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 17, 2024 3:01:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 17, 2024 3:31:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... +Oct 17, 2024 3:31:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) completed! +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 17, 2024 3:31:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) completed! +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [110/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... +Oct 17, 2024 3:31:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) completed! -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) completed! -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [110/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [111/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [111/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) completed! -Oct 17, 2024 3:01:09 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [112/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) completed! -Oct 17, 2024 3:01:10 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) completed! -Oct 17, 2024 3:01:10 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [113/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 17, 2024 3:01:10 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... +Oct 17, 2024 3:31:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 17, 2024 3:01:11 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) completed! +Oct 17, 2024 3:31:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... +Oct 17, 2024 3:31:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 17, 2024 3:01:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) completed! -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [115/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 17, 2024 3:31:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 17, 2024 3:31:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 17, 2024 3:31:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) completed! +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) completed! -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [116/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [117/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) completed! -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [117/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 17, 2024 3:01:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 17, 2024 3:01:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) completed! -Oct 17, 2024 3:01:13 AM reposense.report.ReportGenerator analyzeRepos +Oct 17, 2024 3:31:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) completed! +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [118/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 17, 2024 3:01:13 AM reposense.report.ReportGenerator updateRepoConfig +Oct 17, 2024 3:31:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 17, 2024 3:31:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 17, 2024 3:01:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 17, 2024 3:01:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 17, 2024 3:01:13 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) completed! -Oct 17, 2024 3:01:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 17, 2024 3:01:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 17, 2024 3:31:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 17, 2024 3:31:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) completed! -Oct 17, 2024 3:01:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Oct 17, 2024 3:01:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 17, 2024 3:31:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Oct 17, 2024 3:31:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 17, 2024 3:31:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 17, 2024 3:01:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 17, 2024 3:01:15 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) completed! -Oct 17, 2024 3:01:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 17, 2024 3:01:15 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) completed! -Oct 17, 2024 3:01:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 17, 2024 3:01:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 17, 2024 3:01:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! -Oct 17, 2024 3:01:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 17, 2024 3:31:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 17, 2024 3:01:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 17, 2024 3:31:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 17, 2024 3:01:15 AM reposense.report.ReportGenerator analyzeRepo +Oct 17, 2024 3:31:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) completed! -Oct 17, 2024 3:01:15 AM reposense.report.ReportGenerator generateReposReport +Oct 17, 2024 3:31:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 17, 2024 3:31:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 17, 2024 3:31:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! +Oct 17, 2024 3:31:33 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 17, 2024 3:01:17 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 50.47 second(s) +Oct 17, 2024 3:31:35 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 50.97 second(s) diff --git a/summary.json b/summary.json index 3b91a08c..eeffc598 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Thu, 17 Oct 2024 10:59:28 UTC+08:00","reportGenerationTime":" 1 minute(s) 48.41 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-4_tp_master"}],"errorSet":[],"sinceDate":"2024-09-20","untilDate":"2024-10-17","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"}},"isAuthorshipAnalyzed":false,"blurbs":{"urlBlurbMap":{"https://github.com/AY2425S1-CS2103T-W10-4/tp/tree/master":"**Product:** [StoreClass](https://ay2425s1-cs2103t-w10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-4/tp/tree/master":"**Product:** [AgentAssist](https://ay2425s1-cs2103t-t14-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-4/tp/tree/master":"**Product:** [EZSTATES](https://ay2425s1-cs2103t-f11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-1/tp/tree/master":"**Product:** [Eventory](https://ay2425s1-cs2103t-t12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-3/tp/tree/master":"**Product:** [BridalBuddy](https://ay2425s1-cs2103t-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-3/tp/tree/master":"**Product:** [EduManage](https://ay2425s1-cs2103t-w08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-2/tp/tree/master":"**Product:** [EduTutu](https://ay2425s1-cs2103t-t15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-2/tp/tree/master":"**Product:** [AB3-My-Guest](https://ay2425s1-cs2103t-w11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-3/tp/tree/master":"**Product:** [Hall Pointer](https://ay2425s1-cs2103t-w14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-1/tp/tree/master":"**Product:** [ConcertPhonebook](https://ay2425s1-cs2103t-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-2/tp/tree/master":"**Product:** [T_Assistant](https://ay2425s1-cs2103-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-4/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-t08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-3/tp/tree/master":"**Product:** [NUStates](https://ay2425s1-cs2103t-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-4/tp/tree/master":"**Product:** [GamerBook Pro Max](https://ay2425s1-cs2103t-t12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-4/tp/tree/master":"**Product:** [Clientell](https://ay2425s1-cs2103t-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-4/tp/tree/master":"**Product:** [TalentHub](https://ay2425s1-cs2103t-w12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-2/tp/tree/master":"**Product:** [TAHub Contacts](https://ay2425s1-cs2103t-f14b-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-1/tp/tree/master":"**Product:** [UGTeach](https://ay2425s1-cs2103t-f14a-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-1/tp/tree/master":"**Product:** [TAchy](https://ay2425s1-cs2103-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-2/tp/tree/master":"**Product:** [RealConnect](https://ay2425s1-cs2103-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-3/tp/tree/master":"**Product:** [UniLink](https://ay2425s1-cs2103t-w12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-2/tp/tree/master":"**Product:** [TalentSG](https://ay2425s1-cs2103t-t09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-2/tp/tree/master":"**Product:** [EduConnect](https://ay2425s1-cs2103t-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-1/tp/tree/master":"**Product:** [Prudy](https://ay2425s1-cs2103t-t14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-4/tp/tree/master":"**Product:** [LegacyLink](https://ay2425s1-cs2103t-t10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-3/tp/tree/master":"**Product:** [ContactMate](https://ay2425s1-cs2103t-f14b-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-1/tp/tree/master":"**Product:** [HiredFiredPro](https://ay2425s1-cs2103t-w09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-2/tp/tree/master":"**Product:** [ServiceTrack](https://ay2425s1-cs2103t-t17-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-1a/tp/tree/master":"**Product:** [VolunTier](https://ay2425s1-cs2103t-f08-1a.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-3/tp/tree/master":"**Product:** [Talentcy](https://ay2425s1-cs2103-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-3/tp/tree/master":"**Product:** [PROperty](https://ay2425s1-cs2103t-f15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-1/tp/tree/master":"**Product:** [Cher](https://ay2425s1-cs2103t-w13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-1/tp/tree/master":"**Product:** [InternBuddy](https://ay2425s1-cs2103t-t09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-3/tp/tree/master":"**Product:** [MediBase3](https://ay2425s1-cs2103t-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-1/tp/tree/master":"**Product:** [UniVerse](https://ay2425s1-cs2103t-t17-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-2/tp/tree/master":"**Product:** [KonTActs](https://ay2425s1-cs2103t-t11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-2/tp/tree/master":"**Product:** [EduLog](https://ay2425s1-cs2103t-w09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-1/tp/tree/master":"**Product:** [DLTbook](https://ay2425s1-cs2103t-t08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-4/tp/tree/master":"**Product:** [EventfulNUS](https://ay2425s1-cs2103t-w14-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-3/tp/tree/master":"**Product:** [BizBook](https://ay2425s1-cs2103-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-1/tp/tree/master":"**Product:** [HRHelper](https://ay2425s1-cs2103t-t16-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-3/tp/tree/master":"**Product:** [AgentConnect](https://ay2425s1-cs2103t-w10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-2/tp/tree/master":"**Product:** [PlanPal](https://ay2425s1-cs2103t-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-1/tp/tree/master":"**Product:** [SpleetWaise](https://ay2425s1-cs2103-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-4/tp/tree/master":"**Product:** [SalesContactPro](https://ay2425s1-cs2103t-t17-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-3/tp/tree/master":"**Product:** [Dream Day Designer](https://ay2425s1-cs2103t-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-4/tp/tree/master":"**Product:** [DorManagerPro](https://ay2425s1-cs2103t-w09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-1/tp/tree/master":"**Product:** [MediContact](https://ay2425s1-cs2103t-t10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-2/tp/tree/master":"**Product:** [CCAConnect](https://ay2425s1-cs2103t-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-3/tp/tree/master":"**Product:** [SeeRee 2.0](https://ay2425s1-cs2103-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-3/tp/tree/master":"**Product:** [PawPatrol](https://ay2425s1-cs2103t-t13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-1/tp/tree/master":"**Product:** [Teacher’s Pet](https://ay2425s1-cs2103t-w10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-4/tp/tree/master":"**Product:** [GOATS - Greatest Online Address-book for Tutoring Students](https://ay2425s1-cs2103t-t09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-1/tp/tree/master":"**Product:** [TrackMate](https://ay2425s1-cs2103t-w08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-3/tp/tree/master":"**Product:** [MindMap](https://ay2425s1-cs2103t-w13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-3/tp/tree/master":"**Product:** [Clientele+](https://ay2425s1-cs2103t-f14a-3.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-1/tp/tree/master":"**Product:** [SupplyCentral](https://ay2425s1-cs2103-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-4/tp/tree/master":"**Product:** [tuteez](https://ay2425s1-cs2103t-f09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-4/tp/tree/master":"**Product:** [PhysioPal](https://ay2425s1-cs2103t-w11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-3/tp/tree/master":"**Product:** [MedDict](https://ay2425s1-cs2103t-t08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-1/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-4/tp/tree/master":"**Product:** [Health Connect](https://ay2425s1-cs2103t-t11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-1/tp/tree/master":"**Product:** [MedConnect](https://ay2425s1-cs2103t-t13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-3/tp/tree/master":"**Product:** [ContactsForGood (CFG)](https://ay2425s1-cs2103t-t16-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-2/tp/tree/master":"**Product:** [Volunteams](https://ay2425s1-cs2103t-w12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-2/tp/tree/master":"**Product:** [KeyContacts](https://ay2425s1-cs2103t-t08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-1/tp/tree/master":"**Product:** [data coNdUctorS](https://ay2425s1-cs2103-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-2/tp/tree/master":"**Product:** [ABCLI](https://ay2425s1-cs2103t-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-2/tp/tree/master":"**Product:** [ClientGrid.](https://ay2425s1-cs2103t-t16-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-3/tp/tree/master":"**Product:** [TASync](https://ay2425s1-cs2103t-t10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-1/tp/tree/master":"**Product:** [ClientHub](https://ay2425s1-cs2103t-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-4/tp/tree/master":"**Product:** [Financial Assurance Revolutionary Telemarketer](https://ay2425s1-cs2103t-f14b-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-2/tp/tree/master":"**Product:** [TutorEase](https://ay2425s1-cs2103-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-4/tp/tree/master":"**Product:** [CareLink](https://ay2425s1-cs2103t-t13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-1/tp/tree/master":"**Product:** [BizBook Pro](https://ay2425s1-cs2103t-t11-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master":"**Product:** [HireMe](https://ay2425s1-cs2103t-w09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-3/tp/tree/master":"**Product:** [FindingbrUdders](https://ay2425s1-cs2103t-f08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-4/tp/tree/master":"**Product:** [VBook](https://ay2425s1-cs2103t-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-1/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103t-f14b-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-1/tp/tree/master":"**Product:** [ContactCS](https://ay2425s1-cs2103t-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-4/tp/tree/master":"**Product:** [StudentManagerPro](https://ay2425s1-cs2103-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-2/tp/tree/master":"**Product:** [UniNet](https://ay2425s1-cs2103t-t14-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-3/tp/tree/master":"**Product:** [InvenTrack](https://ay2425s1-cs2103t-t17-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-2/tp/tree/master":"**Product:** [EduContacts](https://ay2425s1-cs2103t-f15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-1/tp/tree/master":"**Product:** [ClubConnect](https://ay2425s1-cs2103t-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-2/tp/tree/master":"**Product:** [BA€](https://ay2425s1-cs2103t-w14-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-3/tp/tree/master":"**Product:** [Grub](https://ay2425s1-cs2103-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-1/tp/tree/master":"**Product:** [VendorVault](https://ay2425s1-cs2103t-w14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-4/tp/tree/master":"**Product:** [TechConnect](https://ay2425s1-cs2103t-f10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-3/tp/tree/master":"**Product:** [LogiLink](https://ay2425s1-cs2103t-t12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-2/tp/tree/master":"**Product:** [PlanPerfect](https://ay2425s1-cs2103t-t12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-4/tp/tree/master":"**Product:** [HRConnect](https://ay2425s1-cs2103t-t15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-3/tp/tree/master":"**Product:** [AcademyAssist](https://ay2425s1-cs2103t-w11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-3/tp/tree/master":"**Product:** [Ward-Watch](https://ay2425s1-cs2103t-t15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-4/tp/tree/master":"**Product:** [NetBook](https://ay2425s1-cs2103t-f08-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-1/tp/tree/master":"**Product:** [InSUREance](https://ay2425s1-cs2103-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-4/tp/tree/master":"**Product:** [WedLinker](https://ay2425s1-cs2103t-f15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-3/tp/tree/master":"**Product:** [MATER](https://ay2425s1-cs2103t-t14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-2/tp/tree/master":"**Product:** [StaffSync](https://ay2425s1-cs2103t-t10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-4/tp/tree/master":"**Product:** [GoonBook](https://ay2425s1-cs2103t-w08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-1/tp/tree/master":"**Product:** [BlitzBiz](https://ay2425s1-cs2103t-w12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-4/tp/tree/master":"**Product:** [KnottyPlanners](https://ay2425s1-cs2103t-w13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-2/tp/tree/master":"**Product:** [ClinicConnect](https://ay2425s1-cs2103t-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-3/tp/tree/master":"**Product:** [MediContacts](https://ay2425s1-cs2103t-t09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-1/tp/tree/master":"**Product:** [NovaCare](https://ay2425s1-cs2103t-f15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-2/tp/tree/master":"**Product:** [SellSavvy](https://ay2425s1-cs2103t-f14a-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-1a/tp/tree/master":"**Product:** [Murphy\u0027s List](https://ay2425s1-cs2103t-w11-1a.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-1/tp/tree/master":"**Product:** [TrueRental](https://ay2425s1-cs2103t-t15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-2/tp/tree/master":"**Product:** [DocTrack](https://ay2425s1-cs2103t-w10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-4/tp/tree/master":"**Product:** [TeleTutors](https://ay2425s1-cs2103t-t16-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-2/tp/tree/master":"**Product:** [ResearchRoster](https://ay2425s1-cs2103t-f08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-2/tp/tree/master":"**Product:** [EventTory](https://ay2425s1-cs2103-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-2/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-4/tp/tree/master":"**Product:** [TalentConnect](https://ay2425s1-cs2103-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-2/tp/tree/master":"**Product:** [CareConnect](https://ay2425s1-cs2103t-w13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-3/tp/tree/master":"**Product:** [ClinicBuddy](https://ay2425s1-cs2103t-f11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-2/tp/tree/master":"**Product:** [NomNom Notifier](https://ay2425s1-cs2103t-t13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-3/tp/tree/master":"**Product:** [Bridal Boss](https://ay2425s1-cs2103t-t11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-4/tp/tree/master":"**Product:** [CampusConnect](https://ay2425s1-cs2103t-f14a-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-2/tp/tree/master":"**Product:** [Eduvault](https://ay2425s1-cs2103t-w08-2.github.io/tp)"}}} +{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Thu, 17 Oct 2024 11:29:45 UTC+08:00","reportGenerationTime":" 1 minute(s) 48.94 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-4_tp_master"}],"errorSet":[],"sinceDate":"2024-09-20","untilDate":"2024-10-17","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"}},"isAuthorshipAnalyzed":false,"blurbs":{"urlBlurbMap":{"https://github.com/AY2425S1-CS2103T-W10-4/tp/tree/master":"**Product:** [StoreClass](https://ay2425s1-cs2103t-w10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-4/tp/tree/master":"**Product:** [AgentAssist](https://ay2425s1-cs2103t-t14-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-4/tp/tree/master":"**Product:** [EZSTATES](https://ay2425s1-cs2103t-f11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-1/tp/tree/master":"**Product:** [Eventory](https://ay2425s1-cs2103t-t12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-3/tp/tree/master":"**Product:** [BridalBuddy](https://ay2425s1-cs2103t-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-3/tp/tree/master":"**Product:** [EduManage](https://ay2425s1-cs2103t-w08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-2/tp/tree/master":"**Product:** [EduTutu](https://ay2425s1-cs2103t-t15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-2/tp/tree/master":"**Product:** [AB3-My-Guest](https://ay2425s1-cs2103t-w11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-3/tp/tree/master":"**Product:** [Hall Pointer](https://ay2425s1-cs2103t-w14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-1/tp/tree/master":"**Product:** [ConcertPhonebook](https://ay2425s1-cs2103t-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-2/tp/tree/master":"**Product:** [T_Assistant](https://ay2425s1-cs2103-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-4/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-t08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-3/tp/tree/master":"**Product:** [NUStates](https://ay2425s1-cs2103t-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-4/tp/tree/master":"**Product:** [GamerBook Pro Max](https://ay2425s1-cs2103t-t12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-4/tp/tree/master":"**Product:** [Clientell](https://ay2425s1-cs2103t-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-4/tp/tree/master":"**Product:** [TalentHub](https://ay2425s1-cs2103t-w12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-2/tp/tree/master":"**Product:** [TAHub Contacts](https://ay2425s1-cs2103t-f14b-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-1/tp/tree/master":"**Product:** [UGTeach](https://ay2425s1-cs2103t-f14a-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-1/tp/tree/master":"**Product:** [TAchy](https://ay2425s1-cs2103-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-2/tp/tree/master":"**Product:** [RealConnect](https://ay2425s1-cs2103-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-3/tp/tree/master":"**Product:** [UniLink](https://ay2425s1-cs2103t-w12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-2/tp/tree/master":"**Product:** [TalentSG](https://ay2425s1-cs2103t-t09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-2/tp/tree/master":"**Product:** [EduConnect](https://ay2425s1-cs2103t-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-1/tp/tree/master":"**Product:** [Prudy](https://ay2425s1-cs2103t-t14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-4/tp/tree/master":"**Product:** [LegacyLink](https://ay2425s1-cs2103t-t10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-3/tp/tree/master":"**Product:** [ContactMate](https://ay2425s1-cs2103t-f14b-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-1/tp/tree/master":"**Product:** [HiredFiredPro](https://ay2425s1-cs2103t-w09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-2/tp/tree/master":"**Product:** [ServiceTrack](https://ay2425s1-cs2103t-t17-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-1a/tp/tree/master":"**Product:** [VolunTier](https://ay2425s1-cs2103t-f08-1a.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-3/tp/tree/master":"**Product:** [Talentcy](https://ay2425s1-cs2103-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-3/tp/tree/master":"**Product:** [PROperty](https://ay2425s1-cs2103t-f15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-1/tp/tree/master":"**Product:** [Cher](https://ay2425s1-cs2103t-w13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-1/tp/tree/master":"**Product:** [InternBuddy](https://ay2425s1-cs2103t-t09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-3/tp/tree/master":"**Product:** [MediBase3](https://ay2425s1-cs2103t-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-1/tp/tree/master":"**Product:** [UniVerse](https://ay2425s1-cs2103t-t17-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-2/tp/tree/master":"**Product:** [KonTActs](https://ay2425s1-cs2103t-t11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-2/tp/tree/master":"**Product:** [EduLog](https://ay2425s1-cs2103t-w09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-1/tp/tree/master":"**Product:** [DLTbook](https://ay2425s1-cs2103t-t08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-4/tp/tree/master":"**Product:** [EventfulNUS](https://ay2425s1-cs2103t-w14-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-3/tp/tree/master":"**Product:** [BizBook](https://ay2425s1-cs2103-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-1/tp/tree/master":"**Product:** [HRHelper](https://ay2425s1-cs2103t-t16-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-3/tp/tree/master":"**Product:** [AgentConnect](https://ay2425s1-cs2103t-w10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-2/tp/tree/master":"**Product:** [PlanPal](https://ay2425s1-cs2103t-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-1/tp/tree/master":"**Product:** [SpleetWaise](https://ay2425s1-cs2103-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-4/tp/tree/master":"**Product:** [SalesContactPro](https://ay2425s1-cs2103t-t17-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-3/tp/tree/master":"**Product:** [Dream Day Designer](https://ay2425s1-cs2103t-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-4/tp/tree/master":"**Product:** [DorManagerPro](https://ay2425s1-cs2103t-w09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-1/tp/tree/master":"**Product:** [MediContact](https://ay2425s1-cs2103t-t10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-2/tp/tree/master":"**Product:** [CCAConnect](https://ay2425s1-cs2103t-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-3/tp/tree/master":"**Product:** [SeeRee 2.0](https://ay2425s1-cs2103-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-3/tp/tree/master":"**Product:** [PawPatrol](https://ay2425s1-cs2103t-t13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-1/tp/tree/master":"**Product:** [Teacher’s Pet](https://ay2425s1-cs2103t-w10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-4/tp/tree/master":"**Product:** [GOATS - Greatest Online Address-book for Tutoring Students](https://ay2425s1-cs2103t-t09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-1/tp/tree/master":"**Product:** [TrackMate](https://ay2425s1-cs2103t-w08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-3/tp/tree/master":"**Product:** [MindMap](https://ay2425s1-cs2103t-w13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-3/tp/tree/master":"**Product:** [Clientele+](https://ay2425s1-cs2103t-f14a-3.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-1/tp/tree/master":"**Product:** [SupplyCentral](https://ay2425s1-cs2103-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-4/tp/tree/master":"**Product:** [tuteez](https://ay2425s1-cs2103t-f09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-4/tp/tree/master":"**Product:** [PhysioPal](https://ay2425s1-cs2103t-w11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-3/tp/tree/master":"**Product:** [MedDict](https://ay2425s1-cs2103t-t08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-1/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-4/tp/tree/master":"**Product:** [Health Connect](https://ay2425s1-cs2103t-t11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-1/tp/tree/master":"**Product:** [MedConnect](https://ay2425s1-cs2103t-t13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-3/tp/tree/master":"**Product:** [ContactsForGood (CFG)](https://ay2425s1-cs2103t-t16-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-2/tp/tree/master":"**Product:** [Volunteams](https://ay2425s1-cs2103t-w12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-2/tp/tree/master":"**Product:** [KeyContacts](https://ay2425s1-cs2103t-t08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-1/tp/tree/master":"**Product:** [data coNdUctorS](https://ay2425s1-cs2103-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-2/tp/tree/master":"**Product:** [ABCLI](https://ay2425s1-cs2103t-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-2/tp/tree/master":"**Product:** [ClientGrid.](https://ay2425s1-cs2103t-t16-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-3/tp/tree/master":"**Product:** [TASync](https://ay2425s1-cs2103t-t10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-1/tp/tree/master":"**Product:** [ClientHub](https://ay2425s1-cs2103t-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-4/tp/tree/master":"**Product:** [Financial Assurance Revolutionary Telemarketer](https://ay2425s1-cs2103t-f14b-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-2/tp/tree/master":"**Product:** [TutorEase](https://ay2425s1-cs2103-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-4/tp/tree/master":"**Product:** [CareLink](https://ay2425s1-cs2103t-t13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-1/tp/tree/master":"**Product:** [BizBook Pro](https://ay2425s1-cs2103t-t11-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master":"**Product:** [HireMe](https://ay2425s1-cs2103t-w09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-3/tp/tree/master":"**Product:** [FindingbrUdders](https://ay2425s1-cs2103t-f08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-4/tp/tree/master":"**Product:** [VBook](https://ay2425s1-cs2103t-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-1/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103t-f14b-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-1/tp/tree/master":"**Product:** [ContactCS](https://ay2425s1-cs2103t-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-4/tp/tree/master":"**Product:** [StudentManagerPro](https://ay2425s1-cs2103-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-2/tp/tree/master":"**Product:** [UniNet](https://ay2425s1-cs2103t-t14-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-3/tp/tree/master":"**Product:** [InvenTrack](https://ay2425s1-cs2103t-t17-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-2/tp/tree/master":"**Product:** [EduContacts](https://ay2425s1-cs2103t-f15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-1/tp/tree/master":"**Product:** [ClubConnect](https://ay2425s1-cs2103t-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-2/tp/tree/master":"**Product:** [BA€](https://ay2425s1-cs2103t-w14-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-3/tp/tree/master":"**Product:** [Grub](https://ay2425s1-cs2103-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-1/tp/tree/master":"**Product:** [VendorVault](https://ay2425s1-cs2103t-w14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-4/tp/tree/master":"**Product:** [TechConnect](https://ay2425s1-cs2103t-f10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-3/tp/tree/master":"**Product:** [LogiLink](https://ay2425s1-cs2103t-t12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-2/tp/tree/master":"**Product:** [PlanPerfect](https://ay2425s1-cs2103t-t12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-4/tp/tree/master":"**Product:** [HRConnect](https://ay2425s1-cs2103t-t15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-3/tp/tree/master":"**Product:** [AcademyAssist](https://ay2425s1-cs2103t-w11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-3/tp/tree/master":"**Product:** [Ward-Watch](https://ay2425s1-cs2103t-t15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-4/tp/tree/master":"**Product:** [NetBook](https://ay2425s1-cs2103t-f08-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-1/tp/tree/master":"**Product:** [InSUREance](https://ay2425s1-cs2103-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-4/tp/tree/master":"**Product:** [WedLinker](https://ay2425s1-cs2103t-f15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-3/tp/tree/master":"**Product:** [MATER](https://ay2425s1-cs2103t-t14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-2/tp/tree/master":"**Product:** [StaffSync](https://ay2425s1-cs2103t-t10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-4/tp/tree/master":"**Product:** [GoonBook](https://ay2425s1-cs2103t-w08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-1/tp/tree/master":"**Product:** [BlitzBiz](https://ay2425s1-cs2103t-w12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-4/tp/tree/master":"**Product:** [KnottyPlanners](https://ay2425s1-cs2103t-w13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-2/tp/tree/master":"**Product:** [ClinicConnect](https://ay2425s1-cs2103t-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-3/tp/tree/master":"**Product:** [MediContacts](https://ay2425s1-cs2103t-t09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-1/tp/tree/master":"**Product:** [NovaCare](https://ay2425s1-cs2103t-f15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-2/tp/tree/master":"**Product:** [SellSavvy](https://ay2425s1-cs2103t-f14a-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-1a/tp/tree/master":"**Product:** [Murphy\u0027s List](https://ay2425s1-cs2103t-w11-1a.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-1/tp/tree/master":"**Product:** [TrueRental](https://ay2425s1-cs2103t-t15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-2/tp/tree/master":"**Product:** [DocTrack](https://ay2425s1-cs2103t-w10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-4/tp/tree/master":"**Product:** [TeleTutors](https://ay2425s1-cs2103t-t16-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-2/tp/tree/master":"**Product:** [ResearchRoster](https://ay2425s1-cs2103t-f08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-2/tp/tree/master":"**Product:** [EventTory](https://ay2425s1-cs2103-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-2/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-4/tp/tree/master":"**Product:** [TalentConnect](https://ay2425s1-cs2103-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-2/tp/tree/master":"**Product:** [CareConnect](https://ay2425s1-cs2103t-w13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-3/tp/tree/master":"**Product:** [ClinicBuddy](https://ay2425s1-cs2103t-f11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-2/tp/tree/master":"**Product:** [NomNom Notifier](https://ay2425s1-cs2103t-t13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-3/tp/tree/master":"**Product:** [Bridal Boss](https://ay2425s1-cs2103t-t11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-4/tp/tree/master":"**Product:** [CampusConnect](https://ay2425s1-cs2103t-f14a-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-2/tp/tree/master":"**Product:** [Eduvault](https://ay2425s1-cs2103t-w08-2.github.io/tp)"}}}